如何修复urllib.error.URLError:<urlopen错误未知的URL类型:c>?

时间:2019-09-06 06:48:05

标签: python python-3.x sys

我正在尝试制作一个下载文件的脚本,但是在执行类似urllib.error.URLError: <urlopen error unknown url type: c>之类的操作后,它不断出现错误download.py https://i.stack.imgur.com/tFuiz.png,这是我的脚本:

import os
import wget
import sys
url = sys.argv[0]
directory = os.path.expanduser('~')
downloadFolderPath = r"%s\Downloads" % directory
os.chdir(downloadFolderPath)
url.replace(":", "%3A")
wget.download(url)

有什么办法可以解决这个问题?

2 个答案:

答案 0 :(得分:1)

import os
import wget
import sys
url = sys.argv[1]
directory = os.path.expanduser('~')
downloadFolderPath = os.path.join(directory, "Downloads")
os.chdir(downloadFolderPath)
url.replace(":", "%3A")
wget.download(url)

问题是您将第一个参数用作url。 argv[0]是脚本名称,而不是您作为参数传递的url。参见:sys.argv documentation

  

传递给Python脚本的命令行参数列表。 argv [0]   是脚本名称(是否为脚本名称取决于操作系统   完整路径名)。

最有可能是因为使用Windows并且第一个参数是完整路径名,例如c:\scripts\download.py之类。

如果将其更改为sys.argv[1]并使用来调用脚本

python download.py https://i.stack.imgur.com/tFuiz.png

(用您的脚本名称替换download.py),它应该可以工作。

注意:我也更改了downloadFolderPath。通过使用os.path.join(),脚本应独立于操作系统运行。例如,在Ubuntu上,由于路径中的反斜杠,您的版本无法正常工作。

答案 1 :(得分:0)

启动命令download.py https://i.stack.imgur.com/tFuiz.png时,sys.argv[0]收到值download.py,而sys.argv[1]收到值https://i.stack.imgur.com/tFuiz.png,因此应使用argv [1]而不是argv [0]