1

ファイルを圧縮するために自動化ツールで使用する python スクリプトを作成しました。問題は、ディレクトリ全体(つまり、すべてのフォルダー)を圧縮すると、ファイルだけではなく、ファイルが圧縮されることです。したがって、test1 と test2 の 2 つのファイルを引数としてデスクトップでこれを実行すると、出力は "Currentdate&time.zip" になり、抽出すると出力されます。/Users/dean/desktop/test1 /Users/dean/desktop/test2 のようになります

そのため、ファイルだけが必要な場合は、これらすべてのフォルダーを圧縮します。助けてください

このコードは、端末から実行するとうまく機能しますが、自動化では機能しません(以下の私のコメント)。このコードを自動化のサービスとして使用します。したがって、1つのファイルは正常に機能します。複数のファイルはありません ところで 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)
4

1 に答える 1

2

あなたのforループでは、これの代わりに -

zf.write(f)

これを試して -

zf.write(f, os.path.basename(f), zipfile.ZIP_DEFLATED)
于 2011-06-28T19:02:13.050 に答える