Заменить существующие файлы с помощью Python "wget"? - PullRequest
1 голос
/ 03 августа 2020

Я установил wget на свой Python и загружаю с его помощью файлы с разных URL. Пока мой код выглядит так:

import wget
urls = ['https://www.iedb.org/downloader.php?file_name=doc/epitope_full_v3.zip', 
        'https://www.iedb.org/downloader.php?file_name=doc/tcell_full_v3.zip',
        'https://www.iedb.org/downloader.php?file_name=doc/bcell_full_v3.zip', 
        'https://www.iedb.org/downloader.php?file_name=doc/mhc_ligand_full_single_file.zip']
path = '/home/david/data/files/zip_files'

for url in urls:
   wget.download(url, path)

Я хочу, чтобы мой код перезаписывал загруженные файлы, если они существуют, поэтому каждый раз, когда я запускаю код, я получаю последнюю версию этих файлов вместо сохраняя старые и загружая новые с другим именем (например, если epitope_full_v3.zip уже существует, когда я выполняю код, он загрузит его снова, но сохранит старый и переименует новый в epitope_full_v3_1.zip) .

Я знаю, что wget может принимать аргумент -O в оболочке, который позволяет вам это делать, но я не видел этого для версии python в документации. Я ценю вашу помощь.

1 Ответ

2 голосов
/ 03 августа 2020

Хотя wget не упоминает об этом, вы можете изменить его самостоятельно. Используйте os.path.basename(), чтобы получить имя файла и проверить, существует ли оно. Примерно так:

import wget
import os

urls = ['https://www.iedb.org/downloader.php?file_name=doc/epitope_full_v3.zip',
        'https://www.iedb.org/downloader.php?file_name=doc/tcell_full_v3.zip',
        'https://www.iedb.org/downloader.php?file_name=doc/bcell_full_v3.zip',
        'https://www.iedb.org/downloader.php?file_name=doc/mhc_ligand_full_single_file.zip']

path = '/home/david/data/files/zip_files'

for url in urls:
    filename = path + '/' + os.path.basename(url) # get the full path of the file
    if os.path.exists(filename):
        os.remove(filename) # if exist, remove it directly
    wget.download(url, out=filename) # download it to the specific path.
...