2015-08-22 3 views
3

Я хочу передать некоторую переменную в командной строке и с другим текстом. Я пробовал с этим кодом, и он не работает. Любые намеки на то, что я могу сделать неправильно или что мне делать вместо этого?Передача переменных в cmd с использованием python

Существует переменная «v», в которой хранится URL-адрес, и я хочу передать этот URL-адрес в cmd с некоторыми другими параметрами. У меня есть этот код прямо сейчас.

working_directory = os.getcwd() 
p = subprocess.Popen(['ffmpeg -i 'v' -c copy getit.mkv'], cwd=working_directory) 
p.wait() 

Но, похоже, что это не работает. Я не могу передать переменную «V». Он просто вставляет V, когда я удалить кавычки

ответ

2

Передайте команду в виде списка, как показано ниже:

working_directory = os.getcwd() 
p = subprocess.Popen(['ffmpeg', '-i', v, '-c' 'copy' 'getit.mkv'], cwd=working_directory) 
p.wait() 

Или используйте shlex.split(), который должен правильно обрабатывать:

cmd = 'ffmpeg -i "{}" -c copy getit.mkv'.format(v) 
p = subprocess.Popen(shlex.split(cmd), cwd=working_directory) 
+0

shlex one работал как я хотел .. thanx :) – Xonshiz

+0

@ user2408212: будьте осторожны, ['shlex' может не работать] (http : //stackoverflow.com/questions/28468807/python-executing-a-shell-command/28468860#comment45287698_28468860). Используйте его только для того, чтобы получить версию * проекта * версии для команды, которую вы можете настроить позже вручную. Кстати, в чем смысл использования 'cwd' с текущим каталогом (' os.getcwd() ')? – jfs

2

Чтобы передать переменную в строку, вы можете использовать format метод string:

v = 'file.avi' 
p = subprocess.Popen(["ffmpeg -i {} -c copy getit.mkv".format(v)], cwd=working_directory) 
+0

Вы и петь «file.avi» в кабриолете. Но, как я уже сказал, он содержит url .. и, следовательно, скрипт не говорит, что он не может найти файл specidifed. – Xonshiz

+0

@ user2408212, что просто пример, измените «file.avi» на путь к файлу, который вы хотите использовать , Если это url, вам нужно сначала загрузить его (или спросить в своем вопрос, как загрузить его через python) – number5

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