【发布时间】:2018-09-17 09:28:22
【问题描述】:
我有一个脚本,其中包含一个列表 - 该列表只是我想像这样传递给 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 (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
我不知道我做错了什么,我尝试了各种方法,所以我非常感谢任何帮助
【问题讨论】:
-
当你需要一个列表(使用
[])时,为什么你将你的命令定义为set(使用{})? -
对不起,这实际上是我在输入问题时遇到的错误,编辑了我的问题
-
只需从
.run([commands],中删除[]。 -
@Rakesh 感谢您的反馈,我将代码更改为您建议的内容,但没有收到任何错误,只是现在它似乎将第一个参数传递给 bash 并忽略了其余的。我做错了什么?非常感谢!
-
@skdadle 不要不要使用
shell=True。它改变了命令列表的解释方式。
标签: python python-3.x bash subprocess