2015-12-15 85 views
-1
import os 
searchquery = 'word' 
with open('C:/Documents/result.txt', 'w') as f: 
    for filename in os.listdir('Y:/Documents/data'): 
     with open('C:/Documents/data/' + filename) as currentFile: 
      text = currentFile.read() 
      for line in text: 
       if searchquery in line: 
        f.write(searchquery + filename[:-4] + '\n') 
       else: 
        print('not here!') 

幫助?爲什麼不在一個目錄中搜索多個文件中的「單詞」,然後將包含「單詞」的整行寫入一個新文件?python從多個文件中讀寫

輸入文件是這樣的:

Blah 
Blah 
Blah 
Blah 
Word blah 
Blah 

而且我所要的輸出只寫,說一個文件:

Word blah <file name> 
Word blah <file name2> 
+0

開始: 試試這個。 – tglaria

+0

這些文件是龐大的多行文本文件,每個文件只有一個對第50000行的「單詞」的引用。沒有錯誤,但它似乎沒有在目錄中的任何文件中找到任何提及的「單詞」。但它肯定會打開正確的文件。輸出只包含數百行「不在這裏」,所以它看起來似乎是讀寫文件,但從來沒有找到「單詞」。這有幫助嗎? – ben

回答

1

在你的代碼列出'Y:/Documents/data',但是從'C:/Documents/data/'你讀。這就是問題。通過解釋什麼是預期的結果,輸入/輸出,你遇到的錯誤(S)(如果有的話)的例子

import os 
searchquery = 'word' 
with open('C:/Documents/data/result.txt', 'w') as f: 
    for filename in os.listdir('Y:/Documents/data/'): 
     with open('Y:/Documents/data/' + filename) as currentFile: 
      for line in currentFile: 
       if searchquery in line: 
        f.write(searchquery + filename + '\n') 
       else: 
        print('not here!')