写入文件并打印到彼此不一致的屏幕

时间:2016-07-15 09:54:37

标签: python

我在写入文件时遇到问题。 似乎发生的是程序以0,1,2,3(第0,第1,第2,第3)的顺序打印数字到屏幕,但是按顺序-1,0,1,2写入文件。即使是print to screen命令跟随write to file命令。 示例代码如下。任何想法如何使它按0,1,2,3的顺序写入文件?

非常感谢 - Scriptham。

import random
import time

ln = 4
mins = 10
j = 0
n_sensor = 0
temp_c = 0
data_file = "/home/pi/laboratory/test.csv"

def read_temp():
    temp_c = 100 * random.random()
    return str("%.3f"% temp_c)


for j in range (1,mins):
    f = open(data_file,'a')
    f.write("\n" + str(j))
    f.close
    for n_sensor in range (0,ln):
        #device_file_1 =
        print("A " + str(n_sensor))
        x = read_temp()
        f = open(data_file, 'a')
        f.write("," + x)
        f.close
        print("OP temp_c = ", x)
        #time.sleep(0.5)
    time.sleep(10) #normally would be 59.5 or 60 or similar

quit()

2 个答案:

答案 0 :(得分:4)

问题很可能是您打开输出文件数十次,但从未关闭它。

您应该在循环之前执行f = open(data_file,'a') ,而只需一次。然后,当一切都完成后,调用 f.close()f.closef.close()不同!)。

答案 1 :(得分:1)

要确保文件始终关闭,您应该使用with语句。 例如:

with open(data_file, 'a') as f:
    f.write("\n" + str(j))

这将关闭文件,即使在write期间发生异常。

或者,你需要使用类似的东西:

f = open(data_file, 'a')
try:
    f.write("\n" + str(j))
finally:
    f.close()