Python 写入文件并打印到屏幕,但彼此不同步

Python 写入文件并打印到屏幕,但彼此不同步,python,Python,我写文件有问题。 似乎发生了这样的情况:一个程序以0,1,2,3(第0、第一、第二、第三)的顺序将数字打印到屏幕上,但以-1、0、1、2的顺序写入文件。即使“打印到屏幕”命令跟随“写入文件”命令。 下面是示例代码。有没有办法让它按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/laborator

我写文件有问题。 似乎发生了这样的情况:一个程序以0,1,2,3(第0、第一、第二、第三)的顺序将数字打印到屏幕上,但以-1、0、1、2的顺序写入文件。即使“打印到屏幕”命令跟随“写入文件”命令。 下面是示例代码。有没有办法让它按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()

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


您应该在循环之前执行一次
f=open(data_file,'a')
。然后在完成所有操作后,调用
f.close()
f.close
f.close()
!)不同。

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


您应该在循环之前执行一次
f=open(data_file,'a')
。然后在完成所有操作后,调用
f.close()
f.close
f.close()
!)不同。

要确保文件始终处于关闭状态,应使用
with
语句。 例如:

with open(data_file, 'a') as f:
    f.write("\n" + str(j))
这将关闭文件,即使在
写入过程中发生异常

或者,您需要使用以下内容:

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

要确保文件始终处于关闭状态,应使用
with
语句。 例如:

with open(data_file, 'a') as f:
    f.write("\n" + str(j))
这将关闭文件,即使在
写入过程中发生异常

或者,您需要使用以下内容:

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

谢谢你们两位的建议,程序现在运行正常了。问题解决了。脚本如果您的问题已得到回答,请将其中一个解决方案标记为正确。谢谢skyhisi。我不知道如何把事情标记为正确。有关信息,两个答案的部分都用于解决问题。您应该能够单击问题旁边的答案向上/向下按钮下方的绿色勾号图标。看看旅游页面:谢谢你们的建议,这个程序现在可以正常运行了。问题解决了。脚本如果您的问题已得到回答,请将其中一个解决方案标记为正确。谢谢skyhisi。我不知道如何把事情标记为正确。有关信息,两个答案的部分都用于解决问题。您应该能够单击问题旁边的答案向上/向下按钮下方的绿色勾号图标。请查看巡更页面: