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 C:\Users\perofu 的目录 2018/10/17 15:08 <DIR> . >>> |
仅作为记录。