subprocess.PIPE остается пустым - PullRequest
0 голосов
/ 30 ноября 2018

, будучи довольно активным потребителем в течение долгого времени, вот мой первый вопрос, на который я не смог найти ответ.

После некоторых обширных исследований я придумал этот код для вызова программного обеспечения для нотной записиMuseScore из Python 3.7 для преобразования файлов при сохранении результатов конвертации 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 выдаст много выходных данных.

Вот то, что я тоже попробовал:

То же самое можно сказать только с одним аргументом команды, так чтоего можно запустить в оболочке:

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) 

Все приводят к пустым файлам.Есть идеи почему?

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...