2013-01-29 2 views
0

Я пытаюсь написать сценарий, и одна из вещей, которую я хочу сделать, это вызвать версию командной строки MP3Gain и передать ее файлу, с которым я работаю, для MP3Gain для нормализации тома. Вот мой код:python subprocess MP3Gain

import subprocess 

class normalize(): 

    def __init__(self, file): 
     self.FileName = file 

    def work(self): 
     command = [r"mp3gain.exe", "-r", r"-c ", self.FileName] 
     subprocess.Popen(command,shell=True,stdout=subprocess.PIPE) 

if __name__ == "__main__": 
    test = normalize(r"C:\Users\CPC\Desktop\2013-01-20.mp3") 
    test.work() 

Если я использую этот же код и открываю другую программу, он отлично работает. Если у меня есть программа, отправьте переменную «command» в текстовый файл, а затем введите то, что находится в текстовом файле в качестве команды в cmd, она также отлично работает. Таким образом, похоже, что существует некоторая помеха между модулем подпроцесса python и MP3Gain. Есть ли у кого-нибудь опыт? Есть ли другой способ сделать то же самое? Любая помощь будет оценена по достоинству.

+0

Кто-нибудь есть какие-нибудь идеи? – user1432738

+0

Почему 'shell = True'? – glglgl

ответ

0

я испытал те же проблемы, и, как выясняется, вам необходимо прочитать вывод программы из STDERR, а не стандартный вывод