在Python中寻找包含所需字符串的目录中的文件

2024-04-19 00:12:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在目录中包含的文件中找到一个字符串。我知道有一个类似banana的字符串存在于一些文件中。

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,因此程序无法正常工作。为什么没有在文件中找到字符串?


Tags: 文件字符串inimportyouinputstringos
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检查文件。

这是我在stackoverflow中的第一个问题,请原谅格式化问题时的错误。 我对你的知识(编程)完全是个初学者。 提前谢谢你。

我在朱庇特试过:

import os

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:
    if os.path.isfile(user_input + os.sep + fname):
        with open(user_input + os.sep + fname, 'r') as file_handler:
            for line in file_handler:
                if searchString in line:
                    print('found string in file %s' %(fname))
                    break

输出:

你的电话簿叫什么名字?k: \0\000.THU.EEG.nedc_tuh_脑电图

你想找什么词?周期性

结果是:

---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-7-d8bc25102277> in <module>

     11         f = open(user_input + os.sep + fname,'r')

     12 

---> 13         if searchString in f.read():

     14             print('found string in file %s' %(fname))

     15         else:

C:\ProgramData\Anaconda3\lib\encodings\cp1252.py in decode(self, input, final)

     21 class IncrementalDecoder(codecs.IncrementalDecoder):

     22     def decode(self, input, final=False):

---> 23         return codecs.charmap_decode(input,self.errors,decoding_table)[0]

     24 

     25 class StreamWriter(Codec,codecs.StreamWriter):

UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 249: character maps to <undefined>

相关问题 更多 >