【问题标题】:7z command in Python 3.6 subprocess.run() on WindowsWindows 上 Python 3.6 subprocess.run() 中的 7z 命令
【发布时间】:2019-12-20 09:32:54
【问题描述】:

我有一个 python 脚本,它应该使用以下命令运行 7z.exe:“x”并使用 subprocess.run() 切换“-o”。脚本如下:

import subprocess as sb


zipperpath = "C:\\Program Files\\7-zip\\7z.exe"
dirname ="C:\\Users\\ajain\\Desktop\\TempData"
archivename="UnprocessedData_v3.7z"
outputfilename="foo"

sb.run([zipperpath,"x",os.path.join(dirname,archivename)," -o",os.path.join(dirname,outputfilename)])

输出是: 尽管返回码为 0,但 zip 永远不会解压缩。

【问题讨论】:

  • 我发现了 2 个潜在问题。首先,您传递的是“-o”而不是“-o”。第二个是文档表明-o和目录需要合并到同一个arg中。
  • 我想有一个原生的 python 7zip 提取器。 stackoverflow.com/questions/44132184/…
  • 你能添加你的命令是如何像你在你的控制台中输入的一样吗??....直接工作?
  • @GiovaniSalazar “jordanm”的评论完美地解决了这个问题。由于语法问题,直接在控制台上执行的命令或程序无法正常运行。

标签: python python-3.x 7zip


【解决方案1】:

试试这个:

import subprocess

# variable cmd is is your command line , like you put in your console 
cmd='7z.exe x UnprocessedData_v3.7z'

process = subprocess.Popen(cmd,shell=True,stdin=None,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
# The output from your shell command in an array
result=process.stdout.readlines()
if len(result) >= 1:
    for line in result:
        print(line)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-12
    • 2016-03-12
    • 2020-08-11
    • 2019-03-07
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多