📅  最后修改于: 2023-12-03 15:35:25.883000             🧑  作者: Mango
如果你需要从命令行中下载文件,Python 可能是你想要使用的工具之一。Python 提供了强大的 urllib 库,可以用于从 URL 地址下载文件。这种方法尤其适用于自动化下载任务。
要在 Ubuntu 命令行下使用 Python 下载文件,你需要使用 urllib 库中的 urlretrieve() 函数。这个函数接受两个参数:你要下载的文件的 URL 地址,以及要保存的本地文件名。
import urllib.request
url = 'https://www.example.com/somefile.txt'
urllib.request.urlretrieve(url, 'localfile.txt')
请替换 URL 和本地文件名为你要下载的文件的实际值。代码中定义的变量名不需要保持一致。
如果你想下载多个文件,你可以将 urlretrieve() 函数放在循环语句中,针对一个 URL 列表。这是一个简单的示例:
import urllib.request
url_list = ['https://www.example.com/somefile1.txt',
'https://www.example.com/somefile2.txt',
'https://www.example.com/somefile3.txt']
for url in url_list:
urllib.request.urlretrieve(url, 'localfile.txt')
在这个示例中,url_list 变量是一个包含 URL 地址的列表。循环对于列表中的每个 URL 地址执行一次,将每个文件下载到名为 “localfile.txt”的本地文件中。在这个例子中,所有下载的文件都被保存到相同的本地文件中,因此最终的文件将包含最后一个下载文件的内容。
默认情况下,urlretrieve() 函数会覆盖同名的本地文件。如果你需要下载文件而不覆盖已经存在的文件,你可以使用 os.path 库来检查文件是否存在。下面是一个示例:
import os.path
import urllib.request
url = 'https://www.example.com/somefile.txt'
local_file = 'localfile.txt'
if not os.path.isfile(local_file):
urllib.request.urlretrieve(url, local_file)
在这个示例中,代码使用 os.path.isfile() 函数检查本地文件是否存在。如果不存在,下载代码运行,并将文件保存到本地文件中。如果文件已经存在,下载代码就会绕过它。
对于大型文件,使用 urlretrieve() 函数可能会出现问题。这种情况下,你可以使用 urllib 库中的 urlretrieve() 函数代替。这个函数从服务器上一次获取一块数据,并将其写入到本地文件中。因为它是逐块写入文件的,这个方法适用于非常大的文件。
import urllib.request
url = 'https://www.example.com/somebigfile.zip'
local_file = 'localfile.zip'
with urllib.request.urlopen(url) as dl_file:
with open(local_file, 'wb') as out_file:
out_file.write(dl_file.read())
在这个示例中,urllib.request.urlopen() 函数打开一个连接到 URL 的输入流。因为输入流使用 with 语句打开,所以自动地在处理完之后关闭。在内部块中,代码按块读取输入流,并将其写入到本地文件中。
这些方法可以让你从 Ubuntu 命令行中使用 Python 下载文件。在使用这些方法时,请确保下载的内容在法律和道德框架内,避免违反任何法律或使用不当。