python3直接print到文件

在python2里面,写文件一个print >>open(..), "sth to write.."重定向就搞定了,很是方便。但是python3里面就有问题了,print后面必须加括弧,导致上面语法不能用。那么python3里面能用print写文件吗?这里简单探讨一下,参考链接


我现在经常用的方式是利用print函数里面的keyword file,这里可以指定一个文件输出流,例如:

print("Hello easycstech!", file=open("output.txt", "a"))
print("I have a question.", file=open("output.txt", "a"))

这里的file如果指定None或者没指定,那么它就是sys.stdout,打印到终端。“a”是append,追加模式,文件中已经有的内容不会被重写,如果希望被重写,可以用“w”。

如果每个print都打开一次对系统性能消耗很大,我们可以把文件打开放到前面:

f = open("output.txt", "a")
print("Hello easycstech!", file=f)
print("I have a question.", file=f)
f.close()

更好点的写法,让with帮你关闭文件:

with open("output.txt", "a") as f:
  print("Hello easycstech!", file=f)
  print("I have a question.", file=f)

上面的方法感觉是最优美的,还有一些黑操作,例如重定向标准输出:

import sys
sys.stdout = open('output.txt','wt')
print ("Hello easycstech!")
print ("I have a question.")

还有程序外重定向:

$ python ./myscript.py > output.txt

还有利用日志的,但是有点跑题了:


注:print_both可以既打印到终端也打印到文件。

14 views

©2020 by EasyCSTech. Special thanks to IPinfo​ and EasyNote.