Ошибка с подпроцессом в скрипте python

Я создаю программу, где я буду конвертировать файлы с использованием subprocesses . Код, который я использую для преобразования:

 import tornado.ioloop import tornado.web import os print "If at any point you wish to quit the program hit Ctrl + C" filetype = raw_input("What kind of file would you like to convert? Audio, Image, Video or Document: ") if filetype == "Document": path = raw_input("Please drag and drop the directory in which the file is stored into the terminal:") os.chdir(path[1:-2]) filename = raw_input("Please enter the name of the file you would like to convert, including the file-type. eg test.txt, however please do make sure that the file-name does not have any spaces:") Fileextension = raw_input("What filetype would you like the program to convert your file to. Eg .txt: ") from subprocess import check_call check_call(["unoconv " ,"-f ", Fileextension , + filename]) elif filetype == "Audio": path = raw_input("Please drag and drop the directory in which the file is stored into the terminal:") os.chdir(path[1:-2]) filename = raw_input("Please enter the name of the file you would like to convert, including the file-type. eg test.txt, however please do make sure that the file-name does not have any spaces:") Fileextension = raw_input("What filetype would you like the program to convert your file to. Eg .mp3: ") body, ext = os.path.splitext("filename") check_call(["ffmpeg" ,"-i", filename , + body + Fileextension]) elif filetype == "Video": path = raw_input("Please drag and drop the directory in which the file is stored into the terminal:") os.chdir(path[1:-2]) filename = raw_input("Please enter the name of the file you would like to convert, including the file-type. eg test.txt, however please do make sure that the file-name does not have any spaces:") Fileextension = raw_input("What filetype would you like the program to convert your file to. Eg .mp4: ") body, ext = os.path.splitext("filename") from subprocess import check_call check_call(["ffmpeg" ,"-i", filename , + body + Fileextension]) elif filetype == "Image": path = raw_input("Please drag and drop the directory in which the file is stored into the terminal:") os.chdir(path[1:-2]) filename = raw_input("Please enter the name of the file you would like to convert, including the file-type. eg test.txt, however please do make sure that the file-name does not have any spaces:") Fileextension = raw_input("What filetype would you like the program to convert your file to. Eg .Jpeg: ") body, ext = os.path.splitext("filename") from subprocess import check_call check_call(["ffmpeg" ,"-i", filename , + body + Fileextension]) 

Когда я запускаю программу, я получаю ошибку:

  File "conversion.py", line 15, in <module> check_call(["unoconv " ,"-f ", Fileextension , + filename]) TypeError: bad operand type for unary +: 'str' 

Любые идеи относительно того, как я могу это решить. Код был бы очень признателен, но в этот момент любая помощь была бы высоко оценена.

One Solution collect form web for “Ошибка с подпроцессом в скрипте python”

Поскольку ошибка говорит о том, что у вас есть и , и + в массиве. Основываясь на других вещах, которые вы делаете, вы, вероятно, захотите избавиться от Fileextension . Вы, вероятно, хотите изменить все эти строки на что-то вроде

 subprocess.check_call(['unoconv', '-f', Fileextension, filename]) 

Обратите внимание, что я также избавился от пространства в «unoconv», потому что иначе он будет искать это пространство как часть исполняемого имени.

При передаче списка check_call каждый элемент списка рассматривается как аргумент процесса (который является первым элементом списка). Итак, если вы хотите запустить unoconv -f file.ext ваш список для check_call станет 3-х элементным списком: ['unoconv', '-f', '.txt', 'file.ext']

Кажется, вы смешиваете конкатенацию строк, чтобы поместить расширение на имена файлов и построить список аргументов.

  • OSError: Нет такого файла или каталога при использовании подпроцесса python в Django
  • Выполнить несколько программ последовательно в одной командной строке Windows?
  • Подождите, пока внешняя программа завершит запись в файл.
  • Выполнение подпроцесса не выполняется
  • Использование Plink (PuTTy) для SSH через Python
  • Могу ли я иметь subprocess.call записать вывод вызова в строку?
  • Python: перенаправление подпроцесса Popen stdout в файл журнала
  • Получение вывода подпроцесса python
  • Вывод RealTime из подпрограммы в stdout виджета pyQT
  • Подстановочный знак не работает при вызове подпроцесса с использованием shlex
  • Python: вызов подпроцесса с оболочкой = False не работает
  • Python - лучший язык программирования в мире.