前言
我们在使用python程序做实验的时候,尤其是要做好多次实验的时候,有时需要把程序的输出进行保存以便对实验进行总结,接下来就分享两种常用的保存python程序输出的方法。
一、编写python代码保存终端输出
最常用的一种方法就是使用python自带的文件编写函数,可以很灵活的选择想要写入到文件的内容,代码格式如下:
with open ('output.txt','w') as file:
file.write(output)
############################################
或者采用下面这种方法
with open ('output.txt','w') as file:
print(output,file)
通过上面的代码可以将变量output的内容写到output.txt文件中了。下面对with open() as file函数做一下简单的介绍。
with open 会自动处理文件的打开和关闭,不用再额外使用file.close()操作。open函数可以接受不同模式的模式参数,例如:
’r’ ,读取模式,默认操作
‘w’, 写入模式,如果文件不存在则创建。
’a’, 追加模式,如果文件存在,写入操作会在文件末尾添加内容,如果文件不存在则创建文件。
‘b’: 二进制模式,用于读写二进制文件。
‘’+': 更新模式,用于读写文件。
一般对于写入文件的话,'w’和’a’模式用的比较多。
二、Liunx重定向操作保存终端输出
接下来介绍一种更方便更强大的方法,那就是使用重定向操作。在Liunx系统中,重定向是一种将命令的输出或错误信息从默认的终端输出位置转移到文件或其他命令的方式,这使得用户可以保存输出结果。下面是一些常用的重定向操作符
1. 输出重定向(>):
将命令的标准输出重定向到一个文件。如果文件不存在,会被创建;如果文件已存在,会被覆盖。
python test.py > output.txt
使用这个命令后,test.py的标准输出将会保存到output.txt文件中,不会在终端中显示,但是报错信息不会被保存到文件中,仍然会显示在终端里。
2. 追加重定向 (>>):
将命令的标准输出追加到一个已存在的文件末尾,而不是覆盖原有内容。
python test.py >> output.txt
在output.txt文件的末尾追加内容,而不是覆盖。
3. 错误重定向 (2>):
将命令的报错信息重定向到一个文件。这不会改变标准输出的位置。
python test.py 2> output.txt
将test.py文件的报错信息输出到output.txt文件中,此时报错信息不会再终端上显示,标准输出仍然显示在终端里。
4. 同时重定向输出和错误 (&>):
将命令的标准输出和报错信息都重定向到同一个文件。
python test.py &> output.txt
此时程序的标准输出和报错信息都同时被写入到txt文件中,终端不会有输出显示。
5. 管道和tee (| 和 tee):
| 是管道操作符,它将一个命令的输出作为另一个命令的输入。
tee 命令默认将标准输出同时显示在终端并写入文件,
python test.py | tee -a output.txt
使用tee命令将输出写入到output.txt文件中。同时tee还有一些可选项,-a 或 --append:将输出追加到文件末尾,而不是覆盖文件
-i 或 --ignore-interrupts:忽略中断信号
6. 合并标准错误到标准输出 (2>&1):
将报错信息输出重定向到当前标准输出的位置。这经常与管道和 tee 命令一起使用。
python test.py 2>&1 | tee -a output.txt
前面讲到tee命令默认会将标准输出同时显示在终端和写入到文件中,而在这条命令里,先使用2>&1将程序的报错信息归类为标准输出,然后在使用tee,因此使用这条命令会将程序的标准输出和报错信息同时显示在终端并且写入到文件中。
总结:如果只是想把标准输出保存到文件中,不在终端中显示,直接使用python test.py > output.py
是最简单的;如果想把标准输出保存到文件中同时显示在终端上(不保存报错信息),用python test.py | tee output.py
;如果想把标准输出和报错信息同时保存在文件中并且显示在终端里,用python test.py 2>&1 | tee output.py
。