Python сжимает весь каталог, а не отдельные файлы - PullRequest
1 голос
/ 28 июня 2011

Я написал скрипт Python, который я использую в Automator для сжатия файлов. проблема в том, что когда я сжимаю их весь каталог (имеется в виду все папки) + файлы сжимаются, а не только файлы сами по себе. Поэтому, если бы я запустил это на своем рабочем столе с двумя файлами, такими как args, test1 и test2, на выходе было бы «Currentdate & time.zip» и когда я его извлеку. это будет выглядеть так / Users / Dean / Desktop / Test1 / Users / декан / настольные / test2

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

этот код работает лучше при запуске из терминала, но не в automator (мой комментарий ниже), я использую этот код в качестве службы в automator. так что один файл работает нормально. несколько файлов не кстати len (sys.argv)> 3 действительно должно быть len (sys.argv)> 1

OSX_username = getpass.getuser()
now = datetime.datetime.today()
dir = os.getcwd()
zip_dir = dir + "/" + now.strftime("%Y-%m-%d %H:%M") + '.zip'
dst_dir = "/Users/" + OSX_username + "/Desktop"
zf = zipfile.ZipFile(now.strftime("%Y-%m-%d %H:%M") + '.zip', mode='w')

if len(sys.argv) > 3: #app 2 service 3
    for f in sys.argv[1:]:
        try:
            zf.write(f)
        finally:
            print ''
    zf.close()
    src = zip_dir
    last_part = os.path.basename(src)
    shutil.move(src, dst_dir)

1 Ответ

2 голосов
/ 28 июня 2011

В вашем цикле for, вместо этого -

zf.write(f)

Попробуйте это -

zf.write(f, os.path.basename(f), zipfile.ZIP_DEFLATED)
...