2017-02-26 43 views
0

我在同一个文件夹中有10个文本文件。我想在for循环中分别处理每个文本文件。Python中循环的文本文件

def qwerty(): 
    with open('file.txt') as f: 
     dicts = {} 
     for words in f: 
      split_words = reg.finditer(words) 
      for line in split_words: 
      group1 = line.group(1) 
      if group1 not in dicts: 
       dicts[group1] = 1 
      else: 
       dicts[group1] += 1 
    return dicts 

这是我的代码来处理单个文本文件。我如何运行一个循环来处理我所有的文本文件?所以文本文件的数量对应于for循环中的迭代次数。

+0

难道这些文本文件名遵循一个模式?你可以从'glob import glob'中输入''然后'在glob中输入文件名(“* .txt”)'。 – tdelaney

+0

@tdelaney嗨,没有文本文件不遵循名称模式 –

+0

是否要处理该目录中的所有文件? – tdelaney

回答

1

您可以使用os模块遍历所有文件在当前直供和过滤只有TXT文件为:

import os 

for file_name in os.listdir("./"): 
    if file_name.endswith(".txt"): # Add some other pattern if possible 
     # Call your method here 

您当前的目录将包含一些其他文件,以及,这可能不会被过滤,所以将txt文件移动到一个单独的位置会更好。

+0

显然,这些文件没有.txt扩展名。使用'os.path.isfile'可能是一个很好的改变。 – tdelaney

+0

但在给定片断的OP使用,这使我的假设,该文本文件具有扩展名''file.txt'''.txt' – ZdaR

+0

我作出评论相同的假设,已得到纠正。他们不遵循'* .txt'模式。这将是正确的答案......如果我们可以让OP告诉我们遵循什么规则。使用'isfile'可以获取目录中的所有文件,这与他的描述最接近。 – tdelaney

0

您可以枚举的文件的文件夹中,并使用在for循环

import os 
from glob import glob 

def qwerty(folder_path="."): 
    for filename in glob(os.path.join(folder_path, "*.txt")): 
     ... do your processing