使用大量.txt文件(以及整体大尺寸)python的技巧?

2024-09-29 19:20:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个脚本来解析txt文件,并将它们存储到一个可以导出到CSV的pandas数据框中。你知道吗

当我使用<;100个文件时,我的脚本很容易工作—但是现在在尝试在完整的示例上运行它时,我遇到了很多问题。你知道吗

我正在处理大约8000个平均大小为300KB的.txt文件,因此总共大约有2.5GB的大小。你知道吗

我想知道我是否能得到一些关于如何使我的代码更有效率的提示。你知道吗

对于打开和读取文件,我使用:

filenames = os.listdir('.')
dict = {}
for file in filenames:
    with open(file) as f:
        contents = f.read()
        dict[file.replace(".txt", "")] = contents

print(dict)会使我的python崩溃(至少看起来是这样)。 有没有更好的方法来处理这个问题?你知道吗

此外,我还将我的dict中的所有values转换为小写,使用:

def lower_dict(d):
   lcase_dict = dict((k, v.lower()) for k, v in d.items())
   return lcase_dict
lower = lower_dict(dict)

我还没有试过这个(不能通过开篇/阅读阶段),但我想知道这是否会导致问题?你知道吗

现在,在我被标记为复制之前,我读过:How can I read large text files in Python, line by line, without loading it into memory?

然而,这个用户似乎正在处理一个非常大的文件,即5GB,而我正在处理多个总计2.5GB的小文件(实际上我的整个示例大约是50GB和60000个文件)。所以我想知道我的方法是否需要有所不同。 抱歉,如果这是一个愚蠢的问题,不幸的是,我不是在内存和计算机处理方法领域精通。你知道吗

非常感谢您的帮助。你知道吗

谢谢


Tags: 文件方法intxt脚本示例forread
1条回答
网友
1楼 · 发布于 2024-09-29 19:20:43

我相信最让你的代码慢下来的是你正在使用的.replace()方法。我认为这是因为内置的replace方法是迭代的,因此效率非常低。尝试在for循环中使用re模块。下面是我最近如何使用模块将键“T”、“:”和“-”替换为“”的示例,在本例中,这些键将从文件中删除:

for line in lines:
    line = re.sub('[T:-]', '', line)

如果有用的话请告诉我!你知道吗

相关问题 更多 >

    热门问题