191°

Windows环境下使用python的commands.getstatusoutput

    windows调用系统或其他脚本的,常用的是os.popen,次命令本身并不返回执行后的状态,无法用于后续的判断,故尝试Unix下的commands.getstatusoutput,发现在windows下并不能正常使用,如下:

>>> import commands
>>> status, output = commands.getstatusoutput('dir')
>>>
>>> import commands
>>> print output
'{' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
>>>
>>> status, output = commands.getstatusoutput(dir)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\commands.py", line 59, in getstatusoutput
    pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')
TypeError: cannot concatenate 'str' and 'builtin_function_or_method' objects

    发现commands调用了os.popen,备份原文件,稍作修改,结果如下:

#pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')

pipe = os.popen(cmd, 'r')

    删除原有的commands.pyc,再试下,即可。

>>> import commands
>>>
>>> status, output = commands.getstatusoutput('dir')
>>>
>>> print output
 驱动器 C 中的卷是 Win 7 Pro x64

 C:\Users\perofu 的目录

2018/10/17  15:08    <DIR>          .
2018/10/17  15:08    <DIR>          ..
2018/05/25  14:59    <DIR>          Contacts
2018/11/22  10:45    <DIR>          Desktop
2018/11/13  10:31    <DIR>          Documents
2018/11/22  10:24    <DIR>          Downloads
2018/10/12  11:28    <DIR>          Favorites
2018/10/08  09:43    <DIR>          Links
2018/10/17  14:56    <DIR>          Music
2018/11/08  11:06    <DIR>          Pictures
2018/05/25  14:59    <DIR>          Saved Games
2018/08/03  17:35    <DIR>          Searches
2018/11/22  13:55    <DIR>          Videos
               1 个文件              5 字节
              14 个目录 94,719,250,432 可用字节
>>>
>>>
>>> print status
0
>>>
>>> status, output = commands.getstatusoutput('aaaaa')
>>>
>>> print status
1
>>> print output

>>>

    仅作为记录。

本文由【perofu】发布于开源中国,原文链接:https://my.oschina.net/fufangchun/blog/2907045

全部评论: 0

    我有话说: