Python Wget:检查重复文件并在存在时跳过?

6

我正在使用WGET下载文件,并希望在下载之前检查文件是否存在。我知道CLI版本有一个选项可以:(参见示例)

# check if file exsists
# if not, download
wget.download(url, path)


使用WGET可以下载文件而不需要命名。这很重要,因为我不想在已经有名称的文件上重新命名它们。
如果有其他的文件下载方法可以检查现有文件,请告诉我!谢谢!
3个回答

3

wget.download() 没有这样的选项。以下解决方法应该能为您解决问题:

import subprocess

url = "https://url/to/index.html"
path = "/path/to/save/your/files"
subprocess.run(["wget", "-r", "-nc", "-P", path, url])

如果文件已经存在,您将会收到以下消息:
File ‘index.html’ already there; not retrieving.

编辑:如果您在Windows上运行此命令,还需要包括shell=True参数:

subprocess.run(["wget", "-r", "-nc", "-P", path, url], shell=True)

我收到一个错误:[WinError 2] 系统找不到指定的文件 - aoeu
1
如果你在Windows上运行此程序,可以使用subprocess.run(["wget", "-r", "-nc", "-P", path, url], shell=True)。我已经编辑了我的答案,包括这个选项,希望能对那些在Windows上运行的人有所帮助。 - Giorgos Myrianthous
1
谢谢!这非常有帮助! - aoeu

1
我看不到Python模块有这个选项。
您可以尝试猜测将使用的文件名(通常是在最后一个斜杠字符之后的部分)。
或者,您可以将文件下载到新的临时目录中,然后检查该文件名是否存在于您的主目录中。

1
源代码来看,wget.download()函数似乎没有其他参数选项,例如-nc-N,用于跳过下载,如果文件已经存在。只有CLI版本支持这一点。
该函数:
def download(url, out=None, bar=bar_adaptive):
    ...

您只能选择URL和输出目录


1
我们应该发起一项请愿活动,以改进wget :-) - Soren

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接