Извлечь только самый последний файл на основе имени файла - PullRequest
0 голосов
/ 03 мая 2019

Я хочу распаковать только самый последний файл из файлов, которые были обновлены.Вот мой код:


def main():

    dest_dir = 'C:/Users/PycharmProjects/kpi/flats'
    zip_file = 'Z:/OUT.zip'

    with ZipFile(zip_file) as zipObj:
        for zip_info in zipObj.infolist():
            if zip_info.filename[-1] == '/':
                continue
            if zip_info.filename.startswith('homeware/R2D2/DATA/OUT/Flat/FlatFile_r2d2_01012018'):
                print(zip_info.filename)
                zip_info.filename = os.path.basename(zip_info.filename)
                zipObj.extract(zip_info,dest_dir)

Извлеченные файлы:

homeware/R2D2/DATA/OUT/Flat/Flat_01012018_180216.csv
homeware/R2D2/DATA/OUT/Flat/Flat_01012018_210147.csv
homeware/R2D2/DATA/OUT/Flat/Flat_01012018_230148.csv

Но я хочу только последний, основанный на имени файла, а не на метаданных

1 Ответ

0 голосов
/ 03 мая 2019

Итак, вместо того, чтобы извлекать на каждой итерации, я добавил в список файлы, которые удовлетворяют требованиям «если».Затем я извлек максимум из этого списка, который является файлом, который я искал.Вот обновленный код:

def main():

    dest_dir = 'C:/Users/mbelahce040119/PycharmProjects/kpi/flats'
    zip_file = 'Z:/DATA/OUT/COMMON_2018/201810/OUT_201810.zip'

    with ZipFile(zip_file) as zipObj:
        files_sat = list()
        for zip_info in zipObj.infolist():
            if zip_info.filename[-1] == '/':
                continue
            if zip_info.filename.startswith('homeware/R2D2/DATA/OUT/Flat/FlatFile_r2d2_01012018'):
                print(zip_info.filename)
                files_sat.append(zip_info.filename)
                zip_info.filename = os.path.basename(max(files))
        zipObj.extract(max(files_sat), dest_dir)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...