Python Wget: проверить наличие дубликатов файлов и пропустить, если он существует? - PullRequest
5 голосов
/ 04 апреля 2019

Итак, я загружаю файлы с помощью WGET и хочу проверить, существует ли файл, прежде чем я его скачаю.Я знаю, что с CLI-версией у него есть опция: (см. Пример) .

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

С WGET он загружает файл, не называя его имени.Это важно, потому что я не хочу переименовывать файлы, когда у них уже есть имя.

Если есть альтернативный метод загрузки файлов, который позволяет проверять существующие файлы, пожалуйста, сообщите мне!Спасибо !!!

Ответы [ 3 ]

2 голосов
/ 05 апреля 2019

Исходный код , похоже, что функция wget.download() не имеет опции для дополнительных параметров, таких как -nc или -N для пропуска загрузок, если файл уже существует. Кажется, только версия CLI поддерживает это.

Функция:

def download(url, out=None, bar=bar_adaptive):
    ...

Вы можете выбрать только URL и выходной каталог

2 голосов
/ 05 апреля 2019

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)
1 голос
/ 05 апреля 2019

Я не вижу, чтобы модуль python имел такую ​​возможность.

Вы можете попытаться угадать имя файла, которое будет использоваться (обычно это будет часть URL после последнего символа косой черты).

Или вы можете загрузить файл в новый временный каталог, а затем проверить, существует ли это имя файла в вашем основном каталоге.

...