【问题标题】:Parsing new data in continuously updating text file在不断更新的文本文件中解析新数据
【发布时间】:2017-08-23 07:51:55
【问题描述】:

我想实时分析一个临时文件(扩展名为 .txt)。临时文件的格式为:

6000 -64.367700E+0 19.035500E-3
8000 -64.367700E+0 18.989700E-3

然而,在导入和打印之后,它并不是我希望的矩阵,而是实际上有格式:

'6000\t-64.367700E+0\t19.035500E-3\n8000\t-64.367700E+0\t18.989700E-3'

我尝试逐行导入,但由于它是字符串格式,我无法让xreadlines()readlines() 工作。我可以拆分字符串,然后将数据分成适当的列表进行分析,但是有什么建议只处理新数据。随着文件变大,它会减慢代码定期重新处理所有数据的速度,我无法弄清楚如何复制xreadlines() 循环。

感谢您的帮助

【问题讨论】:

    标签: python python-2.7 data-analysis readlines real-time-data


    【解决方案1】:

    你试过用这个吗?

    https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

    你可以指定分隔符\t。

    【讨论】:

    • 谢谢。花了我一些时间阅读,但 Panda 的数据框似乎是要走的路。现在只是如何仅在将新数据添加到原始临时文本文件时提取新数据。
    • 您应该尝试阅读:docs.python.org/2/library/logging.html 据我所知,由于并发问题,读取和写入文本文件会很复杂。你应该试试这个:stackoverflow.com/questions/32594137/… 我会处理成批的文件,对部分数据执行分析,而不是直接分析传入的块。或者尝试研究像 spark-streaming 和 Kafka 这样的流系统。如果这适合您,请不要忘记投票
    • 我投了赞成票,但由于我是一个完全的菜鸟,我的代表太低了,无法注册。对不起,谢谢。我正在获取临时文件,读取它,将最后 100 个读数保存在内存中(滚动),根据前 100 个读数处理数据,然后将原始数据和处理后的数据附加到 csv 文件中。还检查了 NumPy 数组,因为它们为我提供了更多数据处理功能。
    • 是的,这是个好主意。 + 当您尝试读取最后 100 个读数时,不要忘记锁定您的文件。另一种解决方案是使用平衡系统,例如。从 A 读取并写入 B,然后按照给定的规则(例如 10 分钟后)切换
    猜你喜欢
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    相关资源
    最近更新 更多