mem*_*ecs 5 python subprocess popen python-2.7
运行子进程将无法正确处理花括号
# Python 2.7.4
import subprocess
subprocess.Popen('ls src/*.cpp',shell=True):
src/tonemap.cpp src/pch.cpp
subprocess.Popen('ls src/{t,p}*.cpp', shell=True)
ls: cannot access src/{p,t}*.cpp: No such file or directory
Run Code Online (Sandbox Code Playgroud)
相同的程序将在python 2.7.2的不同机器上运行.两个系统都使用bash shell.
你是理由,我该如何解决?
编辑:
直接从命令行调用命令会返回正确的结果:
ls src/{t,p}*.cpp
src/tonamep.cpp src/pch.cpp
Run Code Online (Sandbox Code Playgroud)
shell=True运行/bin/sh不支持此语法.bash明确指定:
from subprocess import check_call
check_call('ls src/{t,p}*.cpp', shell=True, executable='/bin/bash')
Run Code Online (Sandbox Code Playgroud)