如何从python脚本执行7zip命令
我试图了解如何使用os.system模块来执行7zip命令。现在,我不想用Popen或子进程使事情复杂化。我已安装7zip并将7zip.exe复制到我的用户文件夹中。我只想解压缩我的测试文件install.zip。但是,使用下面的代码会导致shell在退出之前短暂出现,并且没有解压缩。你能告诉我为什么吗如何从python脚本执行7zip命令,python,7zip,os.system,Python,7zip,Os.system,我试图了解如何使用os.system模块来执行7zip命令。现在,我不想用Popen或子进程使事情复杂化。我已安装7zip并将7zip.exe复制到我的用户文件夹中。我只想解压缩我的测试文件install.zip。但是,使用下面的代码会导致shell在退出之前短暂出现,并且没有解压缩。你能告诉我为什么吗 def main(): try: os.system(r"C:\Users\Oulton\ 7z e C:\Users\Oulton\install.zip")
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()
非常感谢以下行有几个问题:
os.system("C:\Users\Oulton\ 7z e C:\Users\Oulton\install.zip ")
由于字符串包含反斜杠,因此应使用:
(注意第一个双引号前的r
)
我还移除了多余的空间。第一个(在7z
之前)肯定有问题
还要注意,traceback.print\u exc
不调用该函数。您需要添加括号:traceback.print\u exc()
最后,建议在新代码中使用模块。可以使用子流程模块完成:
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();
第一步。正确设置问题中的代码格式。第二步。阅读
子流程
模块。第三步。请将您的问题修改为使用子流程
而不是操作系统
。是的,我会详细阅读子流程thanks@AlexOulton:是否也尝试删除空格?
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();