【问题标题】:database from multiple text files in python来自python中多个文本文件的数据库
【发布时间】:2023-01-09 19:59:44
【问题描述】:

我正在尝试改进我最近编写的 python 代码,它打开一个包含能量列表的文本文件,如下所示:

6.36271
5.37679
165.742
6.53952
...

对于每个条目,它都会搜索专用文件夹(具有相同格式)中包含的任何文件中是否存在能量。如果找到能量,它会返回找到它的文件的名称和能量本身。

问题是文件的数量非常大(>1000),而且每个文件都有很多能量要研究。

该软件可以运行,但速度非常慢,因为它每次搜索条目时都必须打开每个文件,而且我知道如果我可以将所有文件加载到数据库中然后查询它,它的运行速度会快得多。

问题是我从来没有使用过数据库,而且我完全不知道如何从所有数千个文件中创建这样的数据库(跟踪文件名),以及如何在创建后搜索它

如果有人可以帮助我,我将不胜感激

谢谢

【问题讨论】:

  • 请编辑您的问题并包括您尝试过的代码或最小的可重现示例,然后我们可以帮助您解决您可能遇到的任何问题。
  • 是的,使用数据库(sqlite 可能足以满足您的用例)。你需要学习一点SQL才能插入数据和查询

标签: python database


【解决方案1】:

除了使用 SQL 创建数据库来查询数据之外,您还可以将数据存储在 pandas DataFrame 中(并在本地存储在 .csv 或 .xlsx 文件中)。

可行性取决于每个文件中有多少能量条目,但 pandas 能够非常快速地处理数百万行。

您的数据框可以有两列,第一列存储文件名,第二列存储能量值:

Filename Energy values
filename1 6.36271
filename1 5.37679
filename1 165.742
filename1 6.53952
filename2 7.3
filename2 6.36271

然后您可以遍历您的能量条目列表,并针对每个条目过滤 DataFrame 以仅显示找到该条目的行。

例如,搜索 6.36271 将返回此 DataFrame:

Filename Energy values
filename1 6.36271
filename2 6.36271

然后您在文件名列中拥有包含能量值的所有文件。

如果您发布代码的最小工作示例,我可以使用可能的实现更新答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2018-11-28
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多