首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行shell命令在Linux上不起作用。

执行shell命令在Linux上不起作用。
EN

Stack Overflow用户
提问于 2014-10-13 20:22:30
回答 2查看 695关注 0票数 1

我喜欢在Linux系统上运行Python中的shell命令。具体来说,该命令运行所有的Bleachbit清洁器,在运行时非常正常。

然而,试图通过subprocess.call模块运行相同的命令总是会引发异常。

我只是不明白为什么它不应该工作。该命令不需要sudo权限,因此不要求不授予权限。

在执行python命令时,我还关闭了firefox/浏览器。

有人,有什么建议怎么解决这个问题吗?

我的代码:

代码语言:javascript
复制
try:
    subprocess.call('bleachbit -c firefox.*') 
except:
    print "Error."
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-13 23:08:03

默认情况下, module不运行shell,因此shell通配符(全局模式)(如* )不会展开。您可以使用glob手动展开它:

代码语言:javascript
复制
#!/usr/bin/env python
import glob
import subprocess

pattern  = 'firefox.*'
files = glob.glob(pattern) or [pattern]
subprocess.check_call(["bleachbit", "-c"] + files)

如果命令更复杂,并且完全控制它的内容,那么可以使用shell=True在shell中运行它:

代码语言:javascript
复制
subprocess.check_call("bleachbit -c firefox.*", shell=True)
票数 0
EN

Stack Overflow用户

发布于 2014-10-13 20:34:41

当shell为False时,需要传递一个args列表:

代码语言:javascript
复制
import subprocess
try:
    subprocess.call(["bleachbit", "-c","firefox.*"])
except:
    print ("Error.")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26348261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档