subprocess.PIPE保持为空

时间:2018-11-29 21:07:02

标签: python logging subprocess

已经有很长时间了,这是我的第一个问题,我找不到答案。

经过大量研究,我想出了这段代码来调用Python 3.7中的音乐符号软件MuseScore,以便在转换文件的同时将MuseScore的转换输出保存到日志文件中:

import subprocess

with open('conversion.log', 'w') as out:
    proc = subprocess.run(['mscore','-o','out.mscx','in.xml'], encoding='utf-8', stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    for line in proc.stdout.split('\n'):
        out.write(line)`

问题是:无论我做什么,日志文件都严格保持为空。但是,如果我在终端中运行命令,则MuseScore会提供很多输出。

这也是我尝试过的:

同一事物只带有一个命令参数,以便可以在shell中运行:

proc = subprocess.run("mscore -o out.mscx in.mxl", encoding='utf-8', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)

然后我尝试使用capture_output这样的参数:

with open('conversion.log', 'wb', 0) as out:
    proc = subprocess.run(['mscore','-o','out.mscx','in.xml'], capture_output=True)
    out.write(proc.stdout) 

所有产生空文件。有什么想法吗?

提前谢谢!

0 个答案:

没有答案