How can I fix urllib.error.URLError: <urlopen error unknown url type: c>?

How can I fix urllib.error.URLError: <urlopen error unknown url type: c>?

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

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)

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

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

The list of command line arguments passed to a Python script. argv[0] is the script name (it is operating system dependent whether this is a full pathname or not).

很可能您收到错误是因为您使用的是 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 上,由于路径中的反斜杠,您的版本将无法运行。

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