python文件遍历文件时递归有关问题

python文件遍历文件时递归问题
我想在特定文件夹中查找文本文件,并遍历文本文件查找其中有特定后缀并含有特定字符的文本行,并输出。我用os.path.isfile判断文本文件,后来我发现jpg格式文件也能通过判断,会出现UnicodeDecodeError错误,我又想把异常捕捉下来,让程序继续运行,有加了一个递归,谁知道改来改去还是不行,错误还一大堆,本人自学者,没有老师,请各位指点啊,代码写的有点乱,见谅啊

import os,fileinput

def ff(line,arg):
    '''判断特定字符是不是全在文本的某一行中'''

    for x in arg:
        if x in line:
            pass
        else:
            return False

    return True

def search(rootdir,suffixes,arg,listdir):

    for file in listdir:

        path = os.path.join(rootdir,file)
        if os.path.isfile(path):
            
            fh = fileinput.input(path)

            count = 0            #记录行数

            try:                 #我想通过捕捉异常把图片格式的文件过滤掉,让程序继续运行

                for line in fh:
                    count += 1
                    if line.endswith(suffixes):
                        if ff(line,arg):
                            print(count,path +':' + line )

            except UnicodeDecodeError:     
                listdir = listdir.remove(file) #去掉列表中图片格式的文件
                search(rootdir,suffixes,arg,listdir)
                

        if os.path.isdir(path):
            search(rootdir,suffixes,arg,listdir)


rootdir = ('F:\\文档文件')                        
listdir = os.listdir(rootdir)

search(rootdir,('+\n','.cn\n'),('@','com'),listdir)
    
    python文件遍历文件时递归有关问题
  
------解决方案--------------------
建议楼主先处理掉其他格式文件,代码如下

>>> import os
>>> rootdir = "C:\Users\lenovo\Desktop\wenjian"
>>> list_dir = os.listdir(rootdir)
>>> list_dir = os.listdir(rootdir)
>>> print list_dir
['c-api.pdf', 'Chrysanthemum.jpg', 'desktop.ini', 'faq.pdf', 'Hydrangeas.jpg', 'txt_test.txt']
>>> want = []
>>> import re
>>> for i in list_dir:
        if re.findall(r".*?(?=.txt)", i) != []:
    want.append(re.findall(r".*?(?=.txt)", i)[0] + ".txt")

    
>>> want
['txt_test.txt']
>>>