как перевести строку cmd в строку os.system?

Раньше я запускал программу под названием vina через строку cmd, используя следующую команду:

"\Program Files (x86)\The Scripps Research Institute\Vina\vina.exe" --config conf.txt --log log.txt

Итак, программа берет файл конфигурации для запуска и выводит файл журнала с результатами. Я запускаю программу на python, используя модуль os.system. Однако я не могу назначить файл конфигурации или файл журнала, как в cmd. Я пробовал что-то подобное в питоне:

os.system('C:/Program Files (x86)/The Scripps Research Institute/Vina/vina.exe' --config conf.txt --log log.txt)

Программа открывается очень быстро, а затем закрывается, возможно, потому, что она не запускает файл конфигурации. Я также попытался поместить конфигурацию в строку следующим образом (я опускаю журнал, пока не заставлю конфигурацию работать):

os.system('C:/Program Files (x86)/The Scripps Research Institute/Vina/vina.exe', '--config conf.txt')

В этом случае я получаю сообщение об ошибке:

TypeError: system() принимает не более 1 аргумента (даны 2)

Любые идеи о том, как указать файл конфигурации и вывод файла журнала в строках python, как я делаю в cmd?


person Gabriel Cesar    schedule 06.01.2017    source источник
comment
Как насчет использования os.path и извлечения пути, а затем преобразования его в строку для использования с ОС. Система   -  person dhishan    schedule 07.01.2017
comment
Попробуйте subprocess.call(['C:/Program Files (x86)/The Scripps Research Institute/Vina/vina.exe', '--config', os.path.normpath('C:/absolute/path/to/conf.txt'), '--log', 'log.txt']). Это, вероятно, попытается создать файл журнала в рабочем каталоге, что может быть неправильным. В этом случае передайте абсолютный путь к файлу журнала, создав его где-нибудь подходящим, например, в каталоге пользователя %TEMP% через модуль tempfile.   -  person Eryk Sun    schedule 07.01.2017


Ответы (2)


Правильный синтаксис для репликации команды командной строки:

os.system('"C:/Program Files (x86)/The Scripps Research Institute/Vina/vina.exe" --config conf.txt --log log.txt')

Если это не сработает, попробуйте указать полные пути для conf.txt и log.txt.

person Richard    schedule 07.01.2017
comment
Работал отлично. Спасибо! - person Gabriel Cesar; 07.01.2017

os.system(r'"C:/Program Files (x86)/The Scripps Research Institute/Vina/vina.exe" --config conf.txt --log log.txt')

person Grigor Kolev    schedule 07.01.2017