在使用 Python 爬虫下载视频时,如果文件名包含非法字符,可能会导致 OSError: [Errno 22] Invalid argument 错误。

例如,以下代码片段:

def get_video_data(dic):
    #dic={'name':'video_url'}
    url=dic['url']
    print(dic['name'],'下载中......')
    data=requests.get(url=url,headers=headers).content  #视频二进制
    #存储视频
    with open('./爬虫/'+dic['name'],'wb') as fp:
        fp.write(data)  
        print(dic['name'],'下载成功!')

如果 dic['name'] 为 '不'红'了!南京东路这家KFC像咖啡厅.mp4',就会报错,因为文件名中包含了双引号('"')。

这是因为在 Windows 系统中,文件名不能包含以下字符:

  • \ / : * ? ' " < > |

解决方法

  1. 替换非法字符

    将文件名中的非法字符替换成合法的字符,例如:

dic['name'] = dic['name'].replace('"', '') # 将双引号替换为空字符串


2. **修改文件名**

将文件名改为合法的名字。

**示例代码**

```python
def get_video_data(dic):
 #dic={'name':'video_url'}
 url=dic['url']
 print(dic['name'],'下载中......')
 data=requests.get(url=url,headers=headers).content  #视频二进制
 # 替换文件名中的非法字符
 dic['name'] = dic['name'].replace('"', '')
 #存储视频
 with open('./爬虫/'+dic['name'],'wb') as fp:
     fp.write(data)  
     print(dic['name'],'下载成功!')

通过以上方法,就可以解决文件名包含非法字符导致的 OSError: [Errno 22] Invalid argument 错误。

Python爬虫:文件名包含非法字符导致OSError: [Errno 22] Invalid argument 的解决方法

原文地址: https://www.cveoy.top/t/topic/ojcc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录