【问题标题】:Can you re-initiate a for-loop that has a break? Python-3你能重新启动一个有中断的for循环吗? Python-3
【发布时间】:2020-01-07 23:31:39
【问题描述】:

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

这个问题是我在这里解决问题的尝试:Tips for working with large quantity .txt files (and overall large size) - 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'path\example.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 = ["word1", "word2", ... , "word_last"]

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

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

  1. 我将其导出到 pandas 数据框:

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

【问题讨论】:

标签: python-3.x for-loop while-loop break


【解决方案1】:

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

也许这个答案会引导你走向正确的方向:"Large data" work flows using pandas

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

【讨论】:

  • 感谢您的建议,我会阅读该链接。我在我的编辑中添加了一个更精确的摘要,说明我的脚本是做什么的。
猜你喜欢
  • 1970-01-01
  • 2015-06-28
  • 1970-01-01
  • 2011-11-05
  • 2015-03-14
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多