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

これは、個々のテキストファイルを処理するために私のコードです。どのように私は1つずつ持っているすべてのテキストファイルを処理するループを実行するのですか?したがって、テキストファイルの量は、forループの反復回数に対応します。あなたの現在のディレクトリが、フィルタリングされないことがありますこれは、同様にいくつかの他のファイルが含まれます

import os 

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

+0

のためにそれを使用することができますか?あなたは 'glob import glob'から' globの中のファイル名 '(*。txt") 'にすることができます。 – tdelaney

+0

@tdelaneyこんにちは、テキストファイルは名前パターンに従いません。 –

+0

そのディレクトリ内のすべてのファイルを処理しますか? – tdelaney

答えて

1

あなたは、現在のDIRECTRYおよびフィルタ内のすべてのファイルのみTXTファイルを反復するosモジュールを使用することができますしたがって、txtファイルを別の場所に移動することをお勧めします。

+0

これらのファイルには、拡張子が.txtではありません。 'os.path.isfile'を使うことは良い変化かもしれません。 – tdelaney

+0

しかし、与えられたスニペットでOPは '' file.txt ''を使っていました。テキストファイルの拡張子が '.txt'であると仮定しました。 – ZdaR

+0

私はコメントで同じ仮定をして修正しました。それらは '* .txt'パターンに従いません。これは正解です...私たちがOPにどんなルールを教えてもらうことができるならば。 'isfile'を使うと、ディレクトリ内の全てのファイルが得られ、それは彼の記述に最も近いものです。 – tdelaney

0

あなたは、フォルダ内のファイルを列挙し、これらのテキストファイル名がパターンに従ってくださいループ

import os 
from glob import glob 

def qwerty(folder_path="."): 
    for filename in glob(os.path.join(folder_path, "*.txt")): 
     ... do your processing 
関連する問題