2015-12-30 161 views
0

我試圖在目錄中包含的文件中查找字符串。我有一個像banana這樣的字符串,我知道存在於一些文件中。在Python中查找包含所需字符串的文件中的文件

import os 
import sys 

user_input = input("What is the name of you directory?") 
directory = os.listdir(user_input) 
searchString = input("What word are you trying to find?") 

for fname in directory: # change directory as needed 
    if searchString in fname: 
     f = open(fname,'r') 
     print('found string in file %s') %fname 
    else: 
     print('string not found') 

當程序運行時,它只爲每個文件輸出string not found。有三個文件包含單詞banana,因此該程序無法正常工作。爲什麼它不在文件中找到字符串?

+2

請在此粘貼您的代碼,不要發佈屏幕截圖。 – timgeb

+0

爲什麼不在for循環中添加一個'print fname'來查看你得到的東西 – The6thSense

+0

沒問題,粘貼它。 我剛纔添加的打印FNAME for循環,而我得到這個輸出: 什麼是你的目錄的名稱例如 什麼字你想找到香蕉 的1.txt 串?沒有找到 2.txt 字符串沒有找到 3.txt 字符串沒有找到 – rigning

回答

2

您試圖在filename搜索string,使用open(filename, 'r').read()

import os 

user_input = input('What is the name of your directory') 
directory = os.listdir(user_input) 

searchstring = input('What word are you trying to find?') 

for fname in directory: 
    if os.path.isfile(user_input + os.sep + fname): 
     # Full path 
     f = open(user_input + os.sep + fname, 'r') 

     if searchstring in f.read(): 
      print('found string in file %s' % fname) 
     else: 
      print('string not found') 
     f.close() 

我們使用user_input + os.sep + fname得到完整路徑。
os.listdir給出文件和目錄名稱,所以我們使用os.path.isfile來檢查文件。

+0

喔,我看到我正在尋找的文件名字符串。謝謝zetysz,這很有道理。但我得到一個錯誤:文件「C:\用戶\ XX \桌面\ python練習\ practice.py」,第12行,在 f =打開(fname,'r') FileNotFoundError:[Errno 2]否這樣的文件或目錄:'1.txt' – rigning

+0

但它確實。目錄路徑是 desktop \ python exercises \ example \ 1.txt – rigning

+0

我不確定。對於user_input部分,當我運行該程序時,我輸入了 'example',然後查找了搜索字符串,即我正在查找的字符串。 – rigning

相關問題