2015-04-23 5 views
0

Я пытаюсь запустить программу из Python и перенаправить этот вывод в новый файл, который я буду читать в другой программе позже. Есть ли другой способ, которым я должен делать это, кроме «% s>% s»?Почему я постоянно переписываю непредвиденную ошибку python?

distmathandle = open("newfile.distmat", "w") 
cmd = "quicktree -out m %s>%s" % (stfname,distmathandle) 
sys.stderr.write("command: %s\n" %cmd) 
os.system(cmd) 
sys.stderr.write("command done\n") 
distmathandle.close() 
+0

Попробуйте найти подпроцесс: https://docs.python.org/2/library/subprocess.html – Ric

ответ

1

Передача объекта файла команде, но это просто ожидает, что имя файла будет перенаправлено на выход.

Просто попробуйте:

cmd = "quicktree -out m %s>newfile.distmat" % (stfname) 

И удалить открытый()/закрытия() этого файла. Или используйте строковую переменную для имени файла и используйте предыдущую строку. Однако вы не должны открывать файл из двух процессов одновременно.

Выполненная команда не знает об объектах внутри программы Python, из которой она вызвана.

Смежные вопросы