Python在使用子进程时出错.使用自定义参数Popen



我在Python中使用subprocess.Popen与以下参数(我使用pickle):

p = subprocess.Popen(args, stdout=subprocess.PIPE)

args为:

['python', 'pyAppScript.py', 'C:\Users\Herve\AppData\Local\Temp\app.pkl', 2, 'event=True;-;event:bool', 'published=True;-;value:int']

app.pkl之后的参数是我用来设置我的反编组实例的自定义参数。我有以下堆栈跟踪:

File "D:Javaframeworkcodeframeworksamplespythonsample8pythonHttpUtils.py", line 448, in createSubProcess
p = subprocess.Popen(args, stdout=subprocess.PIPE)
File "C:UsersHerveanaconda3libsubprocess.py", line 858, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:UsersHerveanaconda3libsubprocess.py", line 1251, in _execute_child
args = list2cmdline(args)
File "C:UsersHerveanaconda3libsubprocess.py", line 553, in list2cmdline
for arg in map(os.fsdecode, seq):
File "C:UsersHerveanaconda3libos.py", line 818, in fsdecode
filename = fspath(filename)  # Does type-checking of `filename`.
TypeError: expected str, bytes or os.PathLike object, not int

如果我不使用自定义参数,只使用:

p = subprocess.Popen(['python', 'pyAppScript.py', 'C:\Users\Herve\AppData\Local\Temp\app.pkl'], stdout=subprocess.PIPE)

效果很好。我做错了什么?

我的错误是args是:

['python', 'pyAppScript.py', 'C:\Users\Herve\AppData\Local\Temp\app.pkl', 2, 'event=True;-;event:bool', 'published=True;-;value:int']

而它应该是:

['python', 'pyAppScript.py', 'C:\Users\Herve\AppData\Local\Temp\app.pkl', '2', 'event=True;-;event:bool', 'published=True;-;value:int']

最新更新