Python压缩整个目录而不是唯一的文件

时间:2011-06-28 18:46:14

标签: python directory zip compression automator

我编写了一个python脚本,我在automator中用来压缩文件。问题是,当我压缩整个目录(意味着所有文件夹)+文件被压缩而不仅仅是文件本身。因此,如果我在我的桌面上运行这个文件作为args,test1和test2,那么输出将是“Currentdate& time.zip”,当我提取它时。它看起来像这样/ Users / dean / desktop / test1 /用户/院长/桌面/ TEST2

所以当我想要的只是文件时,它会拉上所有这些文件夹。请帮忙

这个代码在从终端运行但不在automator(我在下面的评论中)运行时有效,我将此代码用作automator中的服务。所以一个文件工作正常。多个文件不要btw 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 个答案:

答案 0 :(得分:2)

在你的for循环中,而不是这个 -

zf.write(f)

试试这个 -

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