0

こんにちは、まずここに私のコードがあります:

import os

rootdir= 'C:\Documents and Settings\Guest\My Documents\SC\Actual work\Part2\New Folder'

for subdir, dirs, files in os.walk(rootdir):
  for file in files:
    f=open(file,'rU')
    lines = f.readlines()
    f.close()
    for line in lines:
        if "2002" in line:
            print line

これにより、ディレクトリ内のすべてのファイルを検索し、2002 に一致する行のみを出力するという、私が注意を払った結果が得られます。これにより、それらがシェルの 2002 値の長いリストに出力されます。

私が知りたいのは、後で呼び出されるように各データをそのファイルに関連付ける方法があることです。つまり、ループのどこかに追加/拡張ステートメントを追加して、各データをそのファイルに関連付けることができます。つまり、私が望む出力は次のとおりです。

datafile("name") = [list of all 2002 matches] 
datafile("name2") = [list of all 2002 matches in file 2]

これらのリストを後で呼び出すことができるようにします。コード内でその場でリストを検索して作成するようにしたいと思います。私の新しいコードは以下のとおりですが、すべての最初のファイル データを 1 つのリストにグループ化するわけではなく、各一致をリストに出力するだけです。

rootdir= 'C:\Documents and Settings\Guest\My Documents\SC\Actual work\Part2\New Folder'


for subdir, dirs, files in os.walk(rootdir):
 for file in files:
    f=open(file,'rU')
    lines = f.readlines()
    f.close()
    for line in lines:
        newlist=[]
        if "2011" in line:
            x= newlist.append(line)
            print newlist
4

1 に答える 1

0

辞書を使いたいようです。

datafile = {}

for subdir, dirs, files in os.walk(rootdir):
  for file in files:
   f=open(file,'rU')
   lines = f.readlines()
   f.close()
   newlist=[]
   for line in lines:           
       if "2011" in line:
           x= newlist.append(line)
           print newlist
   datafile[file] = newlist


print datafile  # this prints out every file name, and the corresponding list of matches (if any).

必要なデータを取得するには、次のようにします。

print datafile["filename"]

ファイル名を印刷するには、ループを使用します。

for f in datafile:
    print f, datafile[f][:1]
于 2013-06-22T03:40:35.177 に答える