Как создать ZIP-файл по абсолютному пути с помощью zipfile - PullRequest
0 голосов
/ 09 июня 2018

Я пытаюсь создать zip-файл из файлов из разных каталогов.В конце я хочу сохранить этот zip-файл по другому пути, чем python-файл python.У меня есть следующий фрагмент кода

def zipfile_method(file_list):
    try:
        zip_path = os.path.abspath('/Users/nirmalsarswat/Document/jdk.zip')
        print(zip_path)
        zip_file = zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED)
        for files in file_list:
            path = os.path.abspath(files)
            zip_file.write(path)
        zip_file.close()
    except Exception as e:
        print("exception occured during compression %s" % e)


zipfile_method(['/Users/nirmalsarswat/Desktop/jdk-8u171-macosx-x64.dmg', '/Users/nirmalsarswat/Desktop/resume-nirmal-sarswat.pdf']) 

Путь к моему файлу Python /Users/nirmalsarswat/Desktop/app.py.

Я ожидаю, что путь к файлу будет на /Users/nirmalsarswat/Document/jdk.zip, но zipfile сохраняет его в той же папке файла Python, как этот /Users/nirmalsarswat/Desktop/Users/nirmalsarswat/Document/jdk.zip.

Как я могу сохранить файл на /Users/nirmalsarswat/Document/jdk.zip путь

Я использую MacOS, Python 3.6.4, заранее спасибо !!!

1 Ответ

0 голосов
/ 09 июня 2018

На самом деле я вижу, что вы делаете правильно, но вас путают пути.Когда вы передаете единственный абсолютный путь к write, он заархивирует файл с полным каталогом, который, кажется, является проблемой, с которой вы столкнулись.

Попробуйте выполнить синтаксический анализ basename с write, и он будет работать нормально,как это

from os.path import basename # add this to your imports
def zipfile_method(file_list):
    try:
        zip_path = os.path.abspath('/Users/nirmalsarswat/Document/jdk.zip') # no need to this one, parse string itself
        print(zip_path)
        zip_file = zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED)
        for files in file_list:
            path = os.path.abspath(files)
            zip_file.write(path, basename(path))
        zip_file.close()
    except Exception as e:
        print("exception occured during compression %s" % e)


zipfile_method(['/Users/nirmalsarswat/Desktop/jdk-8u171-macosx-x64.dmg', '/Users/nirmalsarswat/Desktop/resume-nirmal-sarswat.pdf']) 
...