Python - os.walk определенных типов файлов в существующий ZipFile - PullRequest
2 голосов
/ 13 сентября 2011

В основном мне нужно скопировать все файлы определенного типа в папке в zip-файл на самом высоком уровне (не в папке)

Например, у меня есть папка 'A Folder \', и в этой папке находятся файлы .png. Я хочу скопировать все эти файлы в существующий ZipFile. В настоящее время я могу получить только папку для копирования, поэтому я получаю 'ZipFile\A Folder\lots of .pngs' вместо 'ZipFile\lots of .pngs'

Код, который я использую для перемещения файлов и папок:

for root, dirs, files in os.walk('A Folder'):
                for f in files:
                    fname = os.path.join(root, f)
                    myzip.write(fname)

Еще один быстрый вопрос: если бы я мог задать другой вопрос, как бы вы удалили папку из ZipFile?

Надеюсь, это достаточно ясно,

Большое спасибо!

1 Ответ

2 голосов
/ 13 сентября 2011

Согласно документации на python, метод zipfile.write () поддерживает второй аргумент, который является именем назначения (т.е. именем в архиве), попробуйте использовать его следующим образом:

for root, dirs, files in os.walk('A Folder'):
    for f in files:
        fname = os.path.join(root, f)
        new_path = os.path.normpath(fname.replace('A Folder', ''))
        myzip.write(fname, new_path)
...