如何在python中保存文件,因为url包含“?”字符?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在python中保存文件,因为url包含“?”字符?相关的知识,希望对你有一定的参考价值。
我仍在学习。也许这个问题对于某些人来说非常简单易行,但我正在试图解决这个小问题。我正在运行多线程和队列来从站点下载.HTML文件。好。当我尝试保存文件时,一切都运行得很好。一旦URL包含特殊字符,(这一个 - >“?”),我无法保存文件...特殊字符是保存文件时允许使用的注释(/:?* <>),右??
网址就是这个。当我用我的用户名和密码加载它时,它是一个html文件。
if __name__ == "__main__":
urls = ["https://supercarros.com.br/Carros?codigoUC=17342856", "https://supercarros.com.br/Carros?codigoUC=3707466"]
main(urls)
当我尝试使用这部分代码保存时:
def download_file(self, url):
handle = requests.get(url, headers=headers)
fname = os.path.basename(url + ".htm")
with open(fname, "wb") as f:
for chunk in handle.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
del handle
我得到了这个回报:
Traceback (most recent call last):
File "C:Python3lib hreading.py", line 916, in _bootstrap_inner
self.run()
File "f.py", line 24, in run
self.download_file(url)
File "f.py", line 33, in download_file
with open(fname, "wb") as f:
OSError: [Errno 22] Invalid argument: 'Carros?codigoUC=17342856.htm'
Exception in thread Thread-2:
Traceback (most recent call last):
File "C:Python3lib hreading.py", line 916, in _bootstrap_inner
self.run()
File "f.py", line 24, in run
self.download_file(url)
File "f.py", line 33, in download_file
with open(fname, "wb") as f:
OSError: [Errno 22] Invalid argument: 'Carros?codigoUC=3707466.htm'
当然......它不会允许我。我的问题是..我该如何解决这个小问题?如果没有“?”我该怎么做才能保存文件特征,但保留最后一部分“codigoUC = 3707466.htm”
所有帮助表示赞赏。先感谢您
答案
如果您只想从名称中删除?
字符,您可以执行以下操作:
with open(fname.replace('?', ''), "wb") as f:
该文件的名称最终将成为CarroscodigoUC=17342856.htm
如果要删除所有特殊字符,可以使用正则表达式:
import re
fname = re.sub(r'[/:?*<>]', r'', fname)
以上是关于如何在python中保存文件,因为url包含“?”字符?的主要内容,如果未能解决你的问题,请参考以下文章