subprocess module: 怎样在参数里 escape 通配符?

2017-11-16 01:56:00 +08:00
 ericgui
我写了这么几行代码,总是报错,但这个命令显然没问题,
我猜测是通配符的问题,请高人指点:

# -*- coding: utf-8 -*-

import subprocess

distro = subprocess.check_output(['cat', '/etc/*release'])

print distro

这里如果直接在 shell 执行 cat /etc/*release 是没问题的
所以这里估计问题出在字符串上了
查了半天不知道怎么处理
请指教

谢谢
2090 次点击
所在节点    Python
5 条回复
kiwi95
2017-11-16 02:18:40 +08:00
通配符是由 bash 展开的,并不是 cat 本身支持,这样就能知道怎么做了吧
ericgui
2017-11-16 03:35:28 +08:00
@kiwi95 我大概能理解你的意思。是说对通配符的解析,要放在 shell 下执行,所以应该加一个 shell=True ?
我加了,没反应,虽然也没报错了
nanpuyue
2017-11-16 07:28:43 +08:00
bash -c
ericgui
2017-11-16 08:45:43 +08:00
@kiwi95
@nanpuyue 谢谢二位
awanabe
2017-11-16 09:26:45 +08:00
shlex 这个库

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/406779

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX