gpt4 book ai didi

python - 一段时间后无法持续保存和更新 .CSV 文件

转载 作者:太空宇宙 更新时间:2023-11-03 11:54:45 25 4
gpt4 key购买 nike

我编写了一个小程序,每分钟从两台设备读取值,然后将其保存到 .csv 文件。我希望在每次收集每个点后更新和保存文件,这样如果电脑崩溃或发生其他问题,就不会发生数据丢失。为此,我打开文件(ab 模式),使用写行并循环关闭文件。收集之间的时间约为 1 分钟。这很好用,但问题是在 5-6 小时的数据收集后,它停止保存到 .csv 文件,并且没有出现任何错误,代码继续运行,图形正在更新,就像什么都没发生一样,但是打开.csv 文件显示数据丢失。我想知道我使用的代码是否有问题。我也不应该从中运行一个子进程来进行实时绘图,但我认为这不会引起问题……我也添加了这些代码行。

##Initial file declaration and header
with open(filename,'wb') as wdata:
savefile=csv.writer(wdata,dialect='excel')
savefile.writerow(['System time','Time from Start(s)','Weight(g)','uS/cm','uS','Measured degC','%/C','Ideal degC','/cm'])

##Open Plotting Subprocess
draw=subprocess.Popen('TriPlot.py',shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE)
##data collection loop
while True:
Collect Data x and y
Waits for data about 60 seconds, no sleep or pause commoand used, pyserial inteface is used.
## Send Data to subprocess
draw.stdin.write('%d\n' % tnow)
draw.stdin.write('%d\n' % s_w)
draw.stdin.write('%d\n' % tnow)
draw.stdin.write('%d\n' % float(s_c[5]))

##Saving data Section
wdata=open(filename,'ab')
savefile=csv.writer(wdata,dialect='excel')
savefile.writerow([tcurrent,tnow,s_w,s_c[5],s_c[7],s_c[9],s_c[11],s_c[13],s_c[15]])
wdata.close()

P.S 此代码对未显示的代码使用以下包。 pyserial、csv、os、子进程、Tkinter、字符串、numpy、时间和 wx。

最佳答案

如果 draw.stdin.write() 阻塞,这可能意味着您没有及时使用 draw.stdout。文档警告由于操作系统管道缓冲区已满而导致的死锁。

如果您不需要输出,您可以设置 stdout=devnull where devnull = open(os.devnull, 'wb') 否则有几种方法在不阻塞代码的情况下读取输出:threads、select、tempfile.TemoraryFile

关于python - 一段时间后无法持续保存和更新 .CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14368217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com