2013-06-22 57 views
0

大家好,首先這裏的List是我的代碼:數據附加到從字典檢索的Python

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

看起來你想使用字典。

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] 
+0

嗯不是真的這樣didnt實現我的結果。它只是將數據添加到一個大名單。不是包含每個名稱及其值的單個列表。我在之後。文件名= [第一個文件的所有2011年數據],文件名2 = [第二個文件的所有數據] – Newbie

+0

不太確定你想要什麼...你有沒有嘗試打印數據文件? – jh314

+0

是的,看起來更好。我可以通過輸入名稱來訪問數據。有沒有辦法通過循環來調用所有的名字?我可以通過打印數據文件獲取文件名,而不必輸入每個值 – Newbie