大家好,首先是我的代码:
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匹配的行的结果。然后将它们输出到shell中的2002个值的长列表中。
我想知道的是有一种方法可以将每个数据与其文件相关联,以便稍后调用。即我可以在循环中的某处添加append / extend语句,以便将每个数据与其文件相关联。即我想要的输出是:
datafile("name") = [list of all 2002 matches]
datafile("name2") = [list of all 2002 matches in file 2]
这样我以后可以调用这些列表。我想这样做,以便在代码中搜索并动态创建列表。我的新代码在下面,但是它没有将所有第一个文件数据分组到一个列表中,只是将每个匹配打印到一个列表中。
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
答案 0 :(得分: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]