如何从python脚本执行7zip命令

时间:2012-02-03 11:46:39

标签: python 7zip os.system

我试图了解如何使用os.system模块执行7zip命令。现在我不想让Popen或子进程复杂化。我已经安装了7zip并将7zip.exe复制到我的users文件夹中。我只想提取我的测试文件install.zip。但是,使用下面的代码会导致shell在退出之前短暂出现,并且没有发生解压缩。请你告诉我为什么?

def main():
    try:

         os.system(r"C:\Users\Oulton\ 7z e C:\Users\Oulton\install.zip")
    except:
            time.sleep(3)
            traceback.print_exc

if __name__ == "__main__":
    main()

非常感谢

2 个答案:

答案 0 :(得分:7)

以下行有几个问题:

os.system("C:\Users\Oulton\ 7z e C:\Users\Oulton\install.zip  ")

由于您的字符串包含反斜杠,因此您应使用raw string

os.system(r"C:\Users\Oulton\7z -e C:\Users\Oulton\install.zip")

(请注意第一个双引号前的r。)

我也删除了无关的空格。第一个(在7z之前)确实存在问题。

另请注意,traceback.print_exc不会调用该函数。您需要添加括号:traceback.print_exc()

最后,建议在新代码中subprocess模块为used in preference to os.system()

答案 1 :(得分:1)

可以使用子流程模块完成:

import subprocess

beforezip = D:\kr\file                         #full location
afterzip = filename.zip
Unzipped_file = "7z a \"%s\" \"%s\"" %( afterzip, beforezip )
retV = subprocess.Popen(cmdExtractISO, shell=True, stdout=subprocess.PIPE, 
stderr=subprocess.STDOUT)
outData = retV.stdout.readlines();