一、问题描述
import urllib.request
filename = '文件名*文件名/文件名.zip'
urllib.request.urlretrieve( "https://www.......com//1234.zip",filename)
python爬虫下载文件,并保存文件名,报错
urllib.request.urlretrieve( "https://www.......com","文件名*文件名/文件名.zip")
File "C:\Users\lenovo7\AppData\Local\Programs\Python\Python38\lib\urllib\request.py", line 257, in urlretrieve
tfp = open(filename, 'wb')
OSError: [Errno 22] Invalid argument: '文件名*文件名/文件名.zip'
二、问题原因
在爬虫场景中,我们获取到了很多张文件的链接和名字,名字包含有windows 命名所不支持的特殊字符? /, \, :, *, ?, ", <, >, |
文件名不能包含下列任何字符,/, \, :, *, ?, ", <, >, |
三、解决方案
下载保存文件之前需要对文件名进行处理,将不支持的字符替换为空?
import urllib.request
filename = '文件名*文件名/文件名.zip'
sets = ['/', '\\', ':', '*', '?', '"', '<', '>', '|']
for char in filename:
if char in sets:
filename = filename.replace(char, '')
urllib.request.urlretrieve( "https://www.......com//1234.zip",filename)
|