【发布时间】:2013-01-07 01:48:16
【问题描述】:
使用 Python 2.6 子进程模块,我需要对我使用先前子进程调用构建的 src.rpm 文件运行命令。
不幸的是,我正在使用不一致的规范文件,所以我对 src.rpm 的文件名应该是什么样子只有一个模糊的概念(例如,我知道包的名称和扩展名名为“{package}-{version}.src.rpm”但不是版本)。
不过,我知道,我正在查找的目录中只有一个 src.rpm 文件,因此我可以使用类似
的命令调用 mockmock {options} *.src.rpm
并让它在 shell 中工作,但子进程似乎不想接受扩展。我尝试使用 (shell=True) 作为 subprocess.call() 的参数,但即使它有效,我也宁愿避免它。
我如何得到类似的东西
subprocess.call("mock *.src.rpm".split())
跑?
【问题讨论】:
-
我认为您遇到的问题是因为通配符文件名在创建命令之前由操作系统处理,因此您必须自己查找文件名并将它们全部传递到命令行。
-
您可能还想尝试调用 subprocess.Popen,但我不确定它是否能解决您的问题,本教程展示了一个示例:dreamsyssoft.com/python-scripting-tutorial/shell-tutorial.php
-
您可以通过
glob.glob('*.src.rpm')获取文件名列表,这将返回一个列表。然后你只需要在前面加上一个mock...
标签: python shell python-2.6