Python爬虫:文件名包含非法字符导致OSError: [Errno 22] Invalid argument 的解决方法
在使用 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 系统中,文件名不能包含以下字符:
- \ / : * ? ' " < > |
解决方法
-
替换非法字符
将文件名中的非法字符替换成合法的字符,例如:
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 错误。
原文地址: https://www.cveoy.top/t/topic/ojcc 著作权归作者所有。请勿转载和采集!