在Windows上使用Python保存带有URL作为文件名称的文件

时间:2018-01-01 15:57:23

标签: python

我无法在Windows上使用Python保存文件。

这是存储URL的URL变量:

my_url = "https://example.com/some-page"

我想从此字符串中删除“https:”部分和所有“/”。这就是我试过的:

filename = my_url.replace('https://', '')
filename = filename.replace('http://', '')
filename = filename.replace('/', '|') + ".txt"

我想删除这些字符,因为Windows不允许:/个字符作为文件名。

我得到的错误是:

Traceback (most recent call last):
  File "123.py", line 28, in <module>
    f = open(filename, "w")
OSError: [Errno 22] Invalid argument: 'example.com|some-page.txt'

我希望使用多个网址执行此操作,因此即使实际链接使用https,我也尝试删除http

3 个答案:

答案 0 :(得分:1)

Windows文件名中也不允许使用管道符(“|”)。资料来源:https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx

答案 1 :(得分:0)

我设法解决了问题:)

这就是我的所作所为:

filename = my_url.replace('https://', '')
filename = filename.replace('http://', '')
filename = filename.replace('.', '_')
filename = filename.replace('-', '_')
filename = filename.replace('/', '_') + ".txt"

谢谢!

答案 2 :(得分:0)

urllib中有一个名为urllib.parse.quote的函数可以从网址中删除特殊字符,并将其替换为等效的百分比编码。

  

urllib.parse.quote(字符串,安全=&#39; /&#39;,编码=无,错误=无)

     

使用%xx转义替换字符串中的特殊字符。字母,数字和字符&#39; _.-&#39;永远不会引用。默认情况下,此函数用于引用URL的路径部分。可选的安全参数指定不应引用的其他ASCII字符 - 其默认值为&#39; /&#39;。