【问题标题】:how to execute 7zip commands from python script如何从python脚本执行7zip命令
【发布时间】:2012-02-03 11:46:38
【问题描述】:

我正在尝试了解如何使用 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()

非常感谢

【问题讨论】:

  • 步骤 1. 正确格式化问题中的代码。步骤 2. 阅读subprocess 模块。第 3 步。请修改您的问题以使用 subprocess 而不是 os.system
  • 是的,我会阅读子流程谢谢

标签: python 7zip os.system


【解决方案1】:

下面这行有几个问题:

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()

【讨论】:

  • @AlexOulton:也尝试删除空格?
【解决方案2】:

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

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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    相关资源
    最近更新 更多