commands标准错误输出

问题
在使用commands模块时,屏幕输出标准错误无法输出到文件中,无法定位问题

#!/usr/bin/env python
# date: 2020-03-12

import commands

def test_cmd(cmd):
    status, output = commands.getstatusoutput("ls -l '{}' 2>&1".format(cmd))
    print(status)
    print('-'*100)
    with open('w.log', 'a+') as f:
        f.write(output)

if __name__ == '__main__':
    test_cmd('/opt')
    test_cmd("/DON'T TUCH/")

分析
在使用Python之commands模块时,虽然getstatusoutput方法返回一个元组,但是如果shell命令如果错误,及时将output写入文件,也是无法捕获标准错误输出

解决
可以在执行脚本时,再增加标准错误到重定向

[root@localhost py_script]# python p1_command.py >> q.log 2>&1
[root@localhost py_script]# cat w.log 
总用量 0
drwxr-xr-x. 4 root root 104 12月 20 04:44 day_1217
drwxr-xr-x. 2 root root   6 12月 18 05:31 git-learn
drwxr-xr-x. 2 root root  30 12月 26 07:04 mysql_test
drwxr-xr-x. 2 root root  50 3月  13 04:00 py_script
[root@localhost py_script]# cat q.log 
sh: -c:行0: 寻找匹配的 `'' 是遇到了未预期的文件结束符
sh: -c:行1: 语法错误: 未预期的文件结尾

你可能感兴趣的:(commands标准错误输出)