创建文件名过滤非法字符Python写法

最近在用scrapy框架采集网站视频,在下载到本地时候因为有特殊字符则利用python正则替换,具体在框架中的实现方式:

from urllib import request
import re
import os


# 自定义urlretrieve中的回调函数实现下载资源进度条功能
def fun(blocknum, blocksize, totalsize):
    """
    blocknum:当前的块编号
    blocksize:每次传输的块大小
    totalsize:网页文件总大小
    """
    percent = blocknum * blocksize / totalsize
    if percent > 1.0:
        percent = 1.0
    percent = percent * 100
    print("download : %.2f%%" % (percent))


class BanbanPipeline(object):
    def process_item(self, item, spider):
        if item['video'] is not None:
        #windows系统中文件名不能包含 \ / : * ? " < > |想要创建必须过滤掉这些字符
            item['title'] = re.sub('[\/:*?"<>\|]', '-', item['title'])  # 去掉非法字符
            file = 'D:\\video\\' + item["num"] + item['title'] + '.mp4'
            if os.path.exists(file) == False:
                request.urlretrieve('https://' + item['video'], file, fun)
        return item

image.png

支付宝扫码打赏 微信扫码打赏

如果本文对你有帮助,欢迎打赏本站

喜欢 ()or分享
    匿名评论
  • 评论
人参与,条评论