Python 3.x 下载带有urllib的文件并指定保存位置

Python 3.x 下载带有urllib的文件并指定保存位置,python-3.x,urllib,Python 3.x,Urllib,我想在python中使用urllib下载一个“.exe”文件。以下是我在互联网上找到的代码: from urllib import request url = "https://example.com" download_file_name = "example.exe" def download(url, download_file_name): urllib.request.urlretrieve(url, download_file_name) download(url,

我想在python中使用urllib下载一个“.exe”文件。以下是我在互联网上找到的代码:

from urllib import request

url = "https://example.com"
download_file_name = "example.exe"

def download(url, download_file_name):

    urllib.request.urlretrieve(url, download_file_name)

download(url, download_file_name)
我收到一个错误,“NameError:name'urllib'未定义”。urllib已导入,为什么仍然存在错误


另外,我可以更改/指定下载后保存.exe的位置吗?

您没有导入
urllib
。您从
urllib
导入了名称
request
。您可以指定文件的保存位置,方法是提供
download\u file\u name
的完整路径

试试这个:

from urllib import request

url = "https://example.com"
download_file_name = "C:\\example.exe"

def download(url, download_file_name):
    request.urlretrieve(url, download_file_name)

download(url, download_file_name)
但是,
urlretrieve
的全部目的是下载一个临时文件。它保存在临时位置,并最终删除。通过检查
request.urlretrieve的结果,您可以发现它被保存在何处:

url = "https://example.com"
tmp_file = request.urlretrieve(url)
print("Temporary file was saved at " + tmp_file)

非常感谢,是否有机会将其作为永久文件下载?python中是否存在用于此的方法?您可以使用se
urlopen
。urlopen()也下载该文件?这个名字比其他名字更令人困惑。我不需要在urlopen()之后添加read()方法?