python 的写出和错误哪个更好
Which is better way to write out and err of python
我在Linux中写python。我想将 python 输出和错误写入不同的文件,而不是在控制台上输出它们。
如果我有这个 python 文件 example.py
:
print('console output')
print(1/0)
我尝试了不同的方式。
1.通过执行以下命令
python example.py >output 2>log
2.更新 example.py
logf = open("./log", "w")
try:
print('console output')
print(1/0)
except Exception as e:
logf.write(str(e))
并执行python example.py >output
日志不同。
第一种方法:
Traceback (most recent call last):
File "try.py", line 2, in <module>
print(1/0)
ZeroDivisionError: division by zero
对于第二种方法:
division by zero
所以我想问一下:
- 为什么两个日志不一样?以及如何使第二个输出与第一个输出相同。
- 哪个是将错误写入文件的更好方法?或者有更好的方法。
感谢您帮我解答问题。
以简单、原始的方式保留脚本:
# example.py
print('console output')
print(1/0)
在shell中使用简单技巧:
$ python example.py &> log.txt
如果您想对未处理的异常进行一些其他自定义行为,请设置 sys.excepthook
。
将 stdout 和 stderr 合并到一个文件中,这在使用更多(或更少)命令时也很有帮助
python example.py 2>&1 > output
python example.py 2>&1 | more
让每个进入单独的文件
python example.py 2> error > output
忽略stederr
python example 2>/dev/null
希望对您有所帮助。
我在Linux中写python。我想将 python 输出和错误写入不同的文件,而不是在控制台上输出它们。
如果我有这个 python 文件 example.py
:
print('console output')
print(1/0)
我尝试了不同的方式。
1.通过执行以下命令
python example.py >output 2>log
2.更新 example.py
logf = open("./log", "w")
try:
print('console output')
print(1/0)
except Exception as e:
logf.write(str(e))
并执行python example.py >output
日志不同。 第一种方法:
Traceback (most recent call last):
File "try.py", line 2, in <module>
print(1/0)
ZeroDivisionError: division by zero
对于第二种方法:
division by zero
所以我想问一下:
- 为什么两个日志不一样?以及如何使第二个输出与第一个输出相同。
- 哪个是将错误写入文件的更好方法?或者有更好的方法。
感谢您帮我解答问题。
以简单、原始的方式保留脚本:
# example.py
print('console output')
print(1/0)
在shell中使用简单技巧:
$ python example.py &> log.txt
如果您想对未处理的异常进行一些其他自定义行为,请设置 sys.excepthook
。
将 stdout 和 stderr 合并到一个文件中,这在使用更多(或更少)命令时也很有帮助
python example.py 2>&1 > output
python example.py 2>&1 | more
让每个进入单独的文件
python example.py 2> error > output
忽略stederr
python example 2>/dev/null
希望对您有所帮助。