【发布时间】:2016-11-28 10:50:07
【问题描述】:
你好,我可以在 python 程序运行时用 excel 打开文件吗?当我打开它时,它总是没有数据。仅当程序完成时数据在 CSV 中。那么有没有办法让 csv 编写器立即写入数据,而不仅仅是在程序完成后写入数据?
这就是我打开文件的方式
filename = "Messung_von_" + datetime.datetime.now().strftime("%Y_%m_%d-%H_%M_%S")
file=open (filename+ ".csv", "wb")
c = csv.writer(file) #CSV
然后在 for 循环中我将其写入文件
c.writerow([x_in_plot,y_in_plot,get_noise()])
在 for 循环中计算 X 和 Y 值,函数 get_noise() 是一个函数,我只是从设备中读取一个值
在 for 循环之后,我关闭了 csv
file.close()
谢谢
【问题讨论】:
-
可能您的 Python 程序仅在最后刷新输出缓冲区。您需要提供更多详细信息
-
打开一个正在被另一个程序修改的文件是自找麻烦。你想做什么?
-
我编辑了这个信息对你有帮助的问题吗?
-
这应该回答你的问题:stackoverflow.com/questions/18984092/…,在每次写入后使用 flush() 方法或以无缓冲模式打开文件。
-
正如@Zelo 所说,这是因为默认的打开文件模式是缓冲的,这意味着 python 在内部缓冲写入文件,然后只有在遇到缓冲区限制。如果文件足够小,那么在流关闭之前,您实际上不会看到任何写入文件的内容,它在内部刷新并实际写入磁盘。最好的解决方案似乎是以无缓冲模式打开文件,如下所示:
file=open (filename+".csv", "wb", 0)第三个打开的参数是缓冲模式,其中 0 为无缓冲,1 为缓冲。