已经有很长时间了,这是我的第一个问题,我找不到答案。
经过大量研究,我想出了这段代码来调用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)
所有产生空文件。有什么想法吗?
提前谢谢!