我试图了解如何使用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()
非常感谢
答案 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();