博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中的commands模块,执行出错:'{' 不是内部或外部命令,也不是可运行的程序 或批处理文件。...
阅读量:6938 次
发布时间:2019-06-27

本文共 1373 字,大约阅读时间需要 4 分钟。

最近发现了python的commands模块,查看了下源码,使用的popen封装的,形成三个函数getstatus(), getoutput(), getstatusoutput()

源码如下:

def getstatus(file):    """Return output of "ls -ld 
" in a string.""" import warnings warnings.warn("commands.getstatus() is deprecated", DeprecationWarning, 2) return getoutput('ls -ld' + mkarg(file))# Get the output from a shell command into a string.# The exit status is ignored; a trailing newline is stripped.# Assume the command will work with '{ ... ; } 2>&1' around it..#def getoutput(cmd): """Return output (stdout or stderr) of executing cmd in a shell.""" return getstatusoutput(cmd)[1]# Ditto but preserving the exit status.# Returns a pair (sts, output)#def getstatusoutput(cmd): """Return (status, output) of executing cmd in a shell.""" import os pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r') text = pipe.read() sts = pipe.close() if sts is None: sts = 0 if text[-1:] == '\n': text = text[:-1] return sts, text

  通过查看以上源码,发现主要使用的是函数getstatusoutput()。

我调用这个函数的时候,每次的执行结果都是:'{' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

怀疑是getstatusoutput()中的这句话pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')有问题。但是想想这是官网提供的模块,按说不会出现这种问题。

把pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r'),修改为pipe = os.popen('{ ' + cmd + '; }2>&1', 'r'),就是把2>&1前的空格去掉,结果执行没有'{' 不是内部或外部命令,也不是可运行的程序 或批处理文件错误了,但是没有执行结果。

目前不知道怎么解决这个问题,可能是系统的问题吧。

别人使用相同的代码,执行结果正确。

转载地址:http://pigjl.baihongyu.com/

你可能感兴趣的文章
在床上工作不再是梦想!BYOD 将改变未来工作型态
查看>>
PHP 中 9 大缓存技术总结
查看>>
Canonical开始支持动态内核修补,个人用户可免费3台PC
查看>>
使用大数据能源情报创建预测性维护计划
查看>>
起死回生的Android TV有什么不一样?
查看>>
关于人工智能,听听英特尔怎么说
查看>>
伪装成西门子固件的恶意软件钻入10家工厂
查看>>
HTML5游戏开发经验及开发工具分享
查看>>
思科:全数字化为技术变革引入创新基因
查看>>
一骑绝尘,新华三S12500X-AF创造新纪录
查看>>
2017年全国智慧城市将超500个
查看>>
BNEF报告:到2040年拉美地区太阳能风能发电量将达到37%
查看>>
IEA:电网吸纳间歇性可再生能源可分4个阶段
查看>>
铜陵市云计算数据中心入选省“示范工程”
查看>>
Facebook新算法:360度摄影不再感觉头晕
查看>>
Opera反驳微软:我们才是最节能浏览器
查看>>
启用WCF NetTcpBinding的共享端口
查看>>
签约百度推进互联网+交通 西安打造智慧城市
查看>>
大数据全面应用打击线下线上假冒伪劣
查看>>
伊顿助力阿里打造世界级顶尖数据中心
查看>>