import os
import subprocess
proc = subprocess.Popen(['ls','*.bc'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out,err = proc.communicate()
print out
Run Code Online (Sandbox Code Playgroud)
此脚本应打印带有.bc后缀的所有文件,但它会返回一个空列表.如果我在命令行中手动执行ls*.bc它可以工作.在脚本中执行['ls','test.bc']也可以,但由于某些原因,星形符号不起作用..任何想法?
可能重复:
Python子流程通配符用法
使用Python 2.6子进程模块,我需要在我使用先前的子进程调用构建的src.rpm文件上运行命令.
不幸的是,我正在使用不一致的spec文件,所以我对src.rpm的文件名应该是什么样子只有一个模糊的概念(例如,我知道包的名称和名称中的扩展名" {package} - {version} .src.rpm"但不是版本).
但是,我知道我在目录中只有一个src.rpm文件,所以我可以用类似命令调用mock
mock {options} *.src.rpm
并让它在shell中工作,但子进程似乎不想接受扩展.我尝试使用(shell = True)作为subprocess.call()的参数,但即使它工作,我宁愿避免它.
我怎么得到类似的东西
subprocess.call("mock *.src.rpm".split())
跑步?