Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError:execv()arg 2必须仅包含使用docopt的字符串_Python_Subprocess_Docopt - Fatal编程技术网

Python TypeError:execv()arg 2必须仅包含使用docopt的字符串

Python TypeError:execv()arg 2必须仅包含使用docopt的字符串,python,subprocess,docopt,Python,Subprocess,Docopt,我在传递参数时遇到以下错误。有人能帮我找出这个问题吗?我在终端中将指令传递给我的函数,如下所示: python makeQuicktime.py -i /Volumes/P003A/TM_Cloud/Nagrania/Karta_04/XDROOT/Clip/D004C010_141026MM.MXF -f 25 -c prores 这是main函数-正如您所看到的,I'v试图传递参数-编解码器为字符串: if __name__ == "__main__": args = docopt

我在传递参数时遇到以下错误。有人能帮我找出这个问题吗?我在终端中将指令传递给我的函数,如下所示:

python makeQuicktime.py -i /Volumes/P003A/TM_Cloud/Nagrania/Karta_04/XDROOT/Clip/D004C010_141026MM.MXF -f 25 -c prores
这是main函数-正如您所看到的,I'v试图传递参数-编解码器为字符串:

if __name__ == "__main__":
    args = docopt(__doc__, version='makeQuicktime 0.0.1')
    print args
    cmd_args = ""
    codec=str(args['--codec'])

    makeQuicktime( args['--input'], fps=args['--fps'], codec=str(args['--codec']) )

    os._exit(0)
此代码正在运行的其他函数部分(makeProRes,第110行是输出变量):

错误:

Traceback (most recent call last):
  File "makeQuicktime.py", line 123, in <module>
    makeQuicktime( args['--input'], fps=args['--fps'], codec=str(args['--codec']) )
  File "makeQuicktime.py", line 53, in makeQuicktime
    makeProRes(1, input, fps, output)
  File "makeQuicktime.py", line 110, in makeProRes
    output
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 524, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1308, in _execute_child
    raise child_exception
TypeError: execv() arg 2 must contain only strings
回溯(最近一次呼叫最后一次):
文件“makeQuicktime.py”,第123行,在
makeQuicktime(args['--input'],fps=args['--fps'],codec=str(args['--codec']))
makeQuicktime中第53行的文件“makeQuicktime.py”
makeProRes(1,输入,fps,输出)
makeProRes中第110行的文件“makeQuicktime.py”
输出
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py”,第524行,在调用中
返回Popen(*popenargs,**kwargs)。等待()
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py”,第711行,在__
错误读取,错误写入)
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py”,第1308行,在执行子进程中
引发子对象异常
TypeError:execv()arg 2只能包含字符串

开始帧、
fps
cpu
中的一个是数字而不是字符串。当你找到哪个时,把它括在
str()
中进行转换。

str()
围绕
args['--codec']
是不必要的,除非
docopt
将字符串参数转换成其他类型(据我所知不是这样)。此外(不太可能但仍然是):
输入
输出
变量。
Traceback (most recent call last):
  File "makeQuicktime.py", line 123, in <module>
    makeQuicktime( args['--input'], fps=args['--fps'], codec=str(args['--codec']) )
  File "makeQuicktime.py", line 53, in makeQuicktime
    makeProRes(1, input, fps, output)
  File "makeQuicktime.py", line 110, in makeProRes
    output
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 524, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1308, in _execute_child
    raise child_exception
TypeError: execv() arg 2 must contain only strings