Вот сценарий. Я хочу запустить программу командной строки из сценария python. Команда будет генерировать файл после выполнения, который я прочитал бы для некоторых дополнительных операций . Я хочу передать имя файла как параметр функции.Передача имени файла команде оболочки в python
def myfunc(myinputfile,myoutputfile):
cmd = "mycommand -i %s -o %s" %(myinputfile,myoutputfile)
Я попытался с помощью subprocess.call, но, видимо, это требует от меня, чтобы написать имя_команды и аргументы, как отдельные записи в списке. Есть ли другой способ сделать это. Кроме того, важно, чтобы команда выполнялась перед продолжением, так как я хочу прочитать вывод из файла в переменную позже в скрипте.
Зачем задавать аргумент командной строки как список проблем? 'subprocess.call (['mycommand', '-i', myinputfile, '-o', myoutputfile])' – falsetru
Теперь я чувствую себя глупо. –
Правила цитирования в командной строке - боль в заднице. Вы используете _should_ интерфейс, в котором вы передаете список (например, 'subprocess.call'). В противном случае все будет разваливаться, когда путь содержит забавный характер. И помните, что в Linux он может содержать _anything_ except nul byte, и хотя Windows исключает некоторые символы, они по-прежнему не исключают важный случай пространства, и они не исключают их в любом случае. –