我正在尝试制作一个下载文件的脚本,但是在执行类似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)
有什么办法可以解决这个问题?
答案 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]