gpt4 book ai didi

linux - 子进程库不会执行 compgen

转载 作者:太空狗 更新时间:2023-10-29 12:32:09 25 4
gpt4 key购买 nike

我正在尝试列出我的 linux (Lubuntu) 机器上可用的每个命令。我想在 Python 中进一步使用该列表。通常要在控制台中列出命令,我会编写“compgen -c”并将结果打印到标准输出。

我想使用 Python 子进程库执行该命令,但它给了我一个错误,我不知道为什么。

代码如下:

   #!/usr/bin/python

import subprocess

#get list of available linux commands
l_commands = subprocess.Popen(['compgen', '-c'])

print l_commands

这是我遇到的错误:

   Traceback (most recent call last):
File "commands.py", line 6, in <module>
l_commands = subprocess.Popen(['compgen', '-c'])
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory

我卡住了。你们能帮我解决这个问题吗?如何使用子进程执行 compgen 命令?

最佳答案

compgen is a builtin bash command , 在 shell 中运行它:

from subprocess import check_output

output = check_output('compgen -c', shell=True, executable='/bin/bash')
commands = output.splitlines()

你也可以这样写:

output = check_output(['/bin/bash', '-c', 'compgen -c'])

但它将基本部分 (compgen) 放在最后,所以我更喜欢第一个变体。

关于linux - 子进程库不会执行 compgen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23550650/

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