2017-02-26 77 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