问题
在使用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: 语法错误: 未预期的文件结尾
网友评论