<span style="font-family: 'Microsoft YaHei'; background-color: rgb(255, 255, 255);">最近使用python写后台程序,发现了一些平时不太注意的地方。</span>
首先,Python与缓冲区的问题:
一个python程序执行,我们想要将其打印输出重定向到log文件,你会发现直到程序执行完,输出才一次性的写到log文件。原因是python 的print 先写到缓冲区了,还没flush到文件。
如果你想随着程序执行就写入。就要加一行“ sys.stdout.flush()” --在每次print后都flush一次。
其次,open和close的问题:
经过多次实践发现,Python只有在遇到file.close()或者整个Python程序正常退出的时候,才会将你file.write()或者重定向输出到文件的内容真正写入到文件。也就是说,如果你的Python程序一直运行在后台,而你的Python程序累死下面这样,那么你永远那看不到文件被写入:
file = open("path_to_your_file",‘a’)
print >>file,"FOOL!"
while 1:
pass
你必须每次打开文件,写入之后都调用close方法关闭文件,这样,你才能看到一直运行的后台程序向文件的输出。
file = open("path_to_your_file",‘a’)
print >>file,"FOOL!"
file.close()
while 1:
pass