2015-12-30 130 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

相关问题