美文网首页
commands标准错误输出

commands标准错误输出

作者: 守不住的青龙 | 来源:发表于2020-03-12 20:57 被阅读0次

    问题
    在使用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标准错误输出

          本文链接:https://www.haomeiwen.com/subject/atawjhtx.html