3

我试图了解如何使用 os.system 模块来执行 7zip 命令。现在我不想用 Popen 或 subprocess 使事情复杂化。我已经安装了 7zip 并将 7zip.exe 复制到我的用户文件夹中。我只想提取我的测试文件 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()

非常感谢

4

2 回答 2

7

以下行有几个问题:

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

由于您的字符串包含反斜杠,因此您应该使用原始字符串

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

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

我还删除了多余的空格。第一个(在 之前7z)肯定是有问题的。

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

最后,建议在新代码中优先使用subprocess模块而不是.os.system()

于 2012-02-03T11:48:16.857 回答
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();
于 2017-07-21T12:51:28.927 回答