2013-10-27 6 views
3

Я почесываю голову этим часом.Python: Аргументы, которые не получают правильно переданы

Я пытаюсь написать простой скрипт для преобразования старых видео в формате .AVI в .mp4 с HandbrakeCLI, и я не могу заставить Handbrake регистрировать правильные аргументы, я продолжаю получать «Недостающее имя выходного файла. :/Program Files/Handbrake/HandbrakeCLI.exe --help для синтаксиса. \ R \ n "ошибка.

Вот что я до сих пор

import glob 
import os 

import handbrake 

hb = handbrake.HandbrakeEncode 
mydir = "C:\\Path\\To\\MyVids\\" 
os.chdir(mydir) 

filesList = [] 

for files in glob.glob("*.avi"): 
    filesList.append(mydir + files) 
    print(mydir + files) 
    #this prints the correctly assembled path and file as expected 

for files in filesList: 
    print("Encoding file: " + files) 
    hb(files) 

и функция Нв:

def HandbrakeEncode(filepath): 
    import subprocess 
    import os 
    from subprocess import Popen, PIPE 
    outputPath, fileExtension = os.path.splitext(filepath) 
    outputPath += ".mp4" 

    args = '-i ' + filepath + ' -o '+ outputPath 


    cmd = ['C:\\Program Files\\Handbrake\\HandbrakeCLI.exe', args] 


    p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 
    stdout, stderr = p.communicate() 
    print(stdout) 

Спасибо за любую помощь вы можете предложить ...

ответ

6

subprocess.Popen ожидает, что команда расщепляются на откосы:

['foo', '-a', 'bar', '--baz'] 

Ваша команда должна быть список аргументов:

cmd = [ 
    'C:\\Program Files\\Handbrake\\HandbrakeCLI.exe', 
    '-i', filepath, 
    '-o', outputPath 
] 
+0

, сэр, гений. Спасибо!! – hammus

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

  • Нет связанных вопросов^_^