Python:获取Popen实例的命令名称

标签 python python-2.7 popen

我有一个通过 subprocess.Popen 创建的 Popen 类的实例。我想获取该进程的名称,但找不到任何方法或实例变量可以让我获取该名称。例如,如果我有:

p = subprocess.Popen('ls')

我想找到一种方法来给我进程的名称,它的工作方式如下:

>>> p.name()
ls

最佳答案

答案是否定的,直到最新版本的 Python(不稳定)。

查看the source for 3.2.3 ,您可以看到信息没有存储在对象中(它被丢弃了)。然而,在 the latest development version of Python , 它已添加为 subprocess.Popen.args

因此,假设这会进入 3.3,那么您将唯一一次将其视为一项功能。开发文档没有提到它,但这可能只是因为它们没有被更新。它没有使用下划线 (_args) 作为前缀这一事实意味着它旨在成为一个公共(public)属性。

如果您迫切希望将此作为对象的一部分来执行,最简单的答案就是子类化 subprocess.Popen() 并自己添加数据。也就是说,我真的认为在大多数情况下不值得付出努力。

>>> class NamedPopen(Popen):
...     def __init__(self, cargs, *args):
...         Popen.__init__(self, cargs, *args)
...         self.args = cargs
... 
>>> x = NamedPopen("ls")
>>> x.args
'ls'

关于Python:获取Popen实例的命令名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10989077/

相关文章:

python - 删除最后打印的字符python

html - 使用 BeautifulSoup 通过标签类迭代 html

c++ - popen 管道执行程序并读取输出的替代方案

Python popen() 在要求时插入密码

python - Django在不同进程中处理数据

python - Django Rest Framework 未从我的数据库检索数据

python - python的io.BytesIO.getvalue()返回str而不是bytes正常吗?

python - Popen 与冲突的可执行文件/路径

python - 使用 mod_wsgi 导入 python 模块

python - 加密货币两个时间戳之间每分钟的历史价格