如何在Python脚本中执行7zip命令

4 投票
2 回答
10482 浏览
提问于 2025-04-17 12:15

我想了解一下如何使用os.system模块来执行7zip的命令。目前我不想用Popen或subprocess这些复杂的东西。我已经安装了7zip,并把7zip.exe复制到了我的用户文件夹里。我只想解压我的测试文件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()

非常感谢!

2 个回答

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

下面这行代码有几个问题:

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

撰写回答