python如何递归遍历目录及其子目录得到指定扩展名文件路径,为何递归后得不到中文文件名文件

时间:2021-12-03 12:40:07
python如何递归遍历目录及其子目录得到指定扩展名文件路径,为何递归后得不到中文文件名文件
python如何递归遍历目录及其子目录得到指定扩展名文件路径,为何递归后得不到中文文件名文件
程序代码:
#coding:utf-8
import os, sys

def f(p):
    for i in os.listdir(p):
        i = os.path.join(p,i)
        if os.path.isfile(i):
            if os.path.splitext(i)[1] == '.txt':
                print i
        else:
           return f(i)

path = unicode(r'F:\My Study\linux学习笔记\test','utf-8')
f(path)

实在不解为何递归后,没有输出中文名称的txt文件,还请指点迷津解救我这要爆炸的大脑

3 个解决方案

#1


我用的python3,把  path = unicode(r'F:\My Study\linux学习笔记\test','utf-8') 改为  path = r'F:\My Study\linux学习笔记\test' 后,测试没问题,中文文件正常输出。

你调试一下看看哪里出了问题

#2


已经找出问题了,不是这个地方,是return f(i)错了,直接f(i)调用这个函数本身,而不是把f(i)的结果再赋给f再去遍历,非常感谢

#3


return f(i)等于f(f(i))

#1


我用的python3,把  path = unicode(r'F:\My Study\linux学习笔记\test','utf-8') 改为  path = r'F:\My Study\linux学习笔记\test' 后,测试没问题,中文文件正常输出。

你调试一下看看哪里出了问题

#2


已经找出问题了,不是这个地方,是return f(i)错了,直接f(i)调用这个函数本身,而不是把f(i)的结果再赋给f再去遍历,非常感谢

#3


return f(i)等于f(f(i))