首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:未被正确传递给命令的参数

Python:未被正确传递给命令的参数
EN

Stack Overflow用户
提问于 2013-10-27 20:18:02
回答 1查看 506关注 0票数 3

我用这个抓头已经好几个小时了。

我试图编写一个简单的脚本,将.AVI格式的旧视频转换为带有HandbrakeCLI的.mp4,但是我无法让手制动器注册正确的参数,我一直得到“丢失的输出文件名。运行C:/Program / Handbrake /HandbrakeCLI.exe-帮助语法。\r\n”错误。

这是我目前所拥有的

代码语言:javascript
复制
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)

hb函数是:

代码语言:javascript
复制
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)

谢谢你能提供的帮助..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-27 20:20:39

subprocess.Popen期望命令被分割成可以逃避的块:

代码语言:javascript
复制
['foo', '-a', 'bar', '--baz']

您的命令应该是一个参数列表:

代码语言:javascript
复制
cmd = [
    'C:\\Program Files\\Handbrake\\HandbrakeCLI.exe',
    '-i', filepath,
    '-o', outputPath
]
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19623023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档