【问题标题】:Is there anyway to open a CSV File while the programm is running?程序运行时是否可以打开 CSV 文件?
【发布时间】: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 为缓冲。

标签: python csv


【解决方案1】:

在 for 循环中的 File.flush() 为我修复了它!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 2020-03-17
    相关资源
    最近更新 更多