我有一个包含列表的脚本,这个列表只是一些参数,我想将它们传递给subprocess.run
,就像这样:
commands = ["bash command 1", "bash command 2",..]
这是我的代码。
commands = ["bash command 1", "bash command 2",..]
process = subprocess.run([commands], stdout = subprocess.PIPE, shell = True)
我应该如何将列表传递给我的subprocess.run?
这是Traceback:
Traceback (most recent call last):
File "./retesting.py", line 18, in <module>
process = subprocess.run([commands], stdout = subprocess.PIPE, shell = True)
File "/usr/lib/python3.5/subprocess.py", line 383, in run
with Popen(*popenargs, **kwargs) as process:
File "/usr/lib/python3.5/subprocess.py", line 676, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.5/subprocess.py", line 1221, in _execute_child
restore_signals, start_new_session, preexec_fn)
TypeError: Can't convert 'list' object to str implicitly
我不知道我做错了什么,而且我已经尝试了各种方法,所以我非常感激任何帮助。
shell=True
。它会改变命令列表的解释方式。 - Giacomo Alzettalist(commands)
时它可以工作,也可以在去掉[ ]
时工作,我在那里得到了相同的结果,它只是将我的列表中的第一个字符串传递给bash。它们是单独的命令,希望我没有让你困惑。 @MisterMiyagi 我的参数基本上是"cd ~/app cli && bash app"
,其中包含指定用户名和密码以运行该应用程序的参数,但我将它们全部放在一个字符串中,如下所示"cd ~/app cli && bash app -- email some-email --password somepassword .. "
。 - skdadle