你能重新启动一个中断的 for 循环吗?蟒蛇-3



我正在处理大量文件(~8000(并将它们存储到字典中,操作值并分析它们,转换为熊猫数据帧,然后输出到csv。

这个问题是我在这里解决我的问题的尝试:处理大量.txt文件(以及整体大尺寸(的技巧 - python?

代码对于前 ~500 个左右的文件很好,但是当我使用完整示例时,我的计算机/python 崩溃了。

我的代码结构如下所示:

# For-loop 1
for file in filenames:
#do stuff
with open(file) as f:
# do more stuff
# For-loop 2
for k, v in dict():
#do stuff
dict3[k] = dict(Counter(new))
# convert dictionary to dataframe using pandas.
df = pd.DataFrame.from_dict(dict3, orient='index').fillna(0).astype(int)
# export dataframe to excel.
df.to_csv(r'pathexample.csv',index = True, header=True)

我的问题是这样的:

如果我使用以下命令在前 500 个文件之后中断第一个 for 循环:

if file == "500":
break

有没有办法调整代码,以便在脚本运行后,它返回到第一个 for 循环并从文件 501-1001 迭代,直到我循环浏览 8000 个文件?

此外,我希望从最后一行附加 excel 输出,以包含正在迭代的新文件集,而不是完全覆盖。

如果我的解决方案看起来参差不齐,我很想得到一些关于在哪里使用它的反馈,因为我对 python 仍然很陌生。

谢谢!

编辑:详细说明我正在尝试用我的数据做什么

目标:我有数千个.txt文件想要计算关键字,并将这些计数输出到 csv 中。

这是我的过程:

  1. 打开并读取.txt文件,并存储到字典中,如下所示:dict1 ={'file1': '文件中所有内容的字符串', 'file2': '文件中所有内容的字符串', ..."file_last": "文件中所有内容的字符串"}

  2. 现在我想将此字典的所有值转换为小写。 我使用一个名为lower_dict的用户定义函数来获取dict2 = lower_dict(dict1)

  3. 现在,我定义了一个列表,其中包含我想在dict2中计数的单词。 filter_Words = ["单词1", "单词2", ... , "word_last"]

  4. for k, v in dict2.items():我计算每个文件中每个单词的出现次数,并存储到一个新的词典中,dict3

dict3 = {'file1': {'word1': 5, 'word2: 3'}, 'file2': {'word1': 12, 'word2: 0'}}

  1. 我将其导出到熊猫数据帧:

  2. 我将数据帧导出为 csv,行是文件名,列是word1, word2,...条目是这些单词在每个文件中出现的次数。

我不知道您是否有必要将整个文件库存储为字典。通读您的一些不同帖子,听起来您有 50 GB 的文件正在迭代。

也许这个答案会引导你走向正确的方向:"大数据"工作流程使用熊猫

我认为您的问题的解决方案实际上将归结为您尝试构建自定义解决方案的操作。因此,也许您可以在问题中准确概述您对数据执行的操作。这对于数据集的自定义建议可能是必需的。

最新更新