鱼C论坛

 找回密码
 立即注册
查看: 2488|回复: 4

[已解决]递归查找文件只能递归一层

[复制链接]
发表于 2018-4-11 22:38:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问题见图片吧
最佳答案
2018-4-11 22:49:16
第一个让你每次在当前文件夹处理,否则再次os.path.isdir(each_file)判断each_file路径不完整
第二个让你搜完了一个文件夹能往回返,才能实现检查所有文件夹,否则进个文件夹就回不来了
49~~DR`WWIBQME3KOK_I790.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-4-11 22:38:47 | 显示全部楼层
#本代码是第30课动动手第三题
#如果去掉我注释掉的那两行,递归只能进行一层,求大神指教这是为什么
import os
def serchvedio(path,list1):
    #os.chdir(path)      #刚开始写的时候我没加这句
    all_file=os.listdir(path)          #将当前路径内的所有文件存入all_file
    for each_file in all_file:         #循环,判断每个文件的类型
        if os.path.isdir(each_file):   # 如果该文件是一个目录,就递归
            serchvedio((path+ '/' + each_file),list1) #递归
            #os.chdir(os.pardir)   #刚开始写的时候我也没加这句
        elif each_file.find('mp4')!=-1 or each_file.find('rmvb')!=-1 or each_file.find('avi')!=-1:
            list1.append(path+'/'+each_file)
        else:
            continue
def wrifile(list1):  #用来写文件的函数,没啥
    f=open('F:/Python专用/vediolist.txt','w')
    for each in list1:
        f.write(each)
    f.close()
list1=[]
path=input('请输入要查找的路径:')
serchvedio(path,list1)
print(list1)
wrifile(list1)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-11 22:49:16 | 显示全部楼层    本楼为最佳答案   
第一个让你每次在当前文件夹处理,否则再次os.path.isdir(each_file)判断each_file路径不完整
第二个让你搜完了一个文件夹能往回返,才能实现检查所有文件夹,否则进个文件夹就回不来了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-4-12 15:39:56 | 显示全部楼层
我和你有一样的问题,但是我用os.path.splitext()函数替代了os.path.isdir()函数后,就没有这个问题了
这个是我的答案

import os
def findmp4(contents):
   
    for filename in os.listdir(contents):
        if (os.path.isdir(filename)) == 1:
            findavi(contents + "\\" + filename)
        ##if (os.path.splitext(filename))[1] == "":  
        ##    findmp4(contents + "\\" + filename)
        if (os.path.splitext(filename))[1] == ".mp4":
            print(contents + "\\" + filename)

Icontents = input("查找mp4的目录位置:")
findmp4(Icontents)

用os.path.isdir():

================== RESTART: D:\python程序练习\30查找avi.突然的实用.py ==================
查找mp4的目录位置:G:\\不可描述
G:\\不可描述\[MMD] 電ちん観察日記 OBSERVATION DIARY.mp4
>>>

用os.path.splitext()
================== RESTART: D:\python程序练习\30查找avi.突然的实用.py ==================
查找mp4的目录位置:G:\\不可描述
G:\\不可描述\Bambina2+3\下のお口で舐めてみたのです♪.mp4
G:\\不可描述\Bambina2+3\膣鏡を入れて見るのです♪.mp4
G:\\不可描述\[MMD] 電ちん観察日記 OBSERVATION DIARY.mp4


希望能帮到你XD
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-4-12 22:05:40 | 显示全部楼层
qq1067271279 发表于 2018-4-12 15:39
我和你有一样的问题,但是我用os.path.splitext()函数替代了os.path.isdir()函数后,就没有这个问题了
这 ...

还真的有不可描述啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-8 03:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表