我在写入文件时遇到问题。 似乎发生的是程序以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()
答案 0 :(得分:4)
问题很可能是您打开输出文件数十次,但从未关闭它。
您应该在循环之前执行f = open(data_file,'a')
,而只需一次。然后,当一切都完成后,调用 f.close()
(f.close
与f.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()