gpt4 book ai didi

Python 子进程命令参数

转载 作者:太空狗 更新时间:2023-10-29 11:33:37 27 4
gpt4 key购买 nike

为什么如果我运行 subprocess.check_output('ls') 一切正常,但是当我向命令添加参数时:subprocess.check_output('ls -la') 我得到错误:

Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python2.7/subprocess.py", line 537, in check_output
process = Popen(stdout=PIPE, *popenargs, **kwargs)
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory

如何将命令参数传递给 subprocess.check_output()

最佳答案

您需要将参数拆分成一个列表:

subprocess.check_output(['ls', '-la']) 

subprocess callables 不像 shell 那样将命令解析为单独的参数。您要么需要自己执行此操作,要么需要告诉 subprocess 显式使用 shell:

subprocess.check_output('ls -la', shell=True) 

不推荐使用后者,因为它会使您的应用程序面临安全漏洞。如果需要,您可以使用 shlex.split() 来解析类似 shell 的命令行:

>>> import shlex
>>> shlex.split('ls -la')
['ls', '-la']

关于Python 子进程命令参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13332032/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com