鱼C论坛

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

[已解决]求帮忙

[复制链接]
发表于 2020-4-26 14:15:13 | 显示全部楼层 |阅读模式
1鱼币
编写一个程序,用户输入开始搜索的路径,查找该路径下(包含子文件夹内)所有的视频格式文件(要求查找mp4 rmvb, avi的格式即可),并把创建一个文件(vedioList.txt)存放所有找到的文件的路径,程序实现如图:

import os

m=input("输入目录:")

def find(x):
   
    os.chdir(x)
    y=os.getcwd()
    n=os.listdir(x)
    for each in n:
        if os.path.isfile(each)==True:
            kuozhan=each.split(".")[1]
            if kuozhan in ["avi","mp4"]:
                list.append(os.getcwd()+os.sep+each)
        if os.path.isdir(each)==True:
            return find(os.path.join(y,each))
            os.chdir(os.pardir("."))
    print(list)
list=[]
find(m)

总是只找到最里面一层文件
最佳答案
2020-4-26 14:15:14
zhujuf 发表于 2020-4-26 15:07
试了下 把红色那个return去掉就成了,。。。但是想不通为什么
import os

主要错在 os.chdir(os.pardir) 缩进错误,还有里面的 os.pardir 你写成了函数调用,实际上它不是函数。
还有 你用 list 做变量名跟内置 list 类重名了,会出问题。
其他都是小问题

最佳答案

查看完整内容

主要错在 os.chdir(os.pardir) 缩进错误,还有里面的 os.pardir 你写成了函数调用,实际上它不是函数。 还有 你用 list 做变量名跟内置 list 类重名了,会出问题。 其他都是小问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-26 14:15:14 | 显示全部楼层    本楼为最佳答案   
zhujuf 发表于 2020-4-26 15:07
试了下 把红色那个return去掉就成了,。。。但是想不通为什么
import os

主要错在 os.chdir(os.pardir) 缩进错误,还有里面的 os.pardir 你写成了函数调用,实际上它不是函数。
还有 你用 list 做变量名跟内置 list 类重名了,会出问题。
其他都是小问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-26 14:40:38 | 显示全部楼层
本帖最后由 hrp 于 2020-4-26 14:42 编辑
import os

m = input("输入目录:")

def find(x):
    try:
        os.chdir(x)
        n = os.listdir(x)
        for each in n:
            if os.path.isfile(each):
                kuozhan = os.path.splitext(each)[1]
                if kuozhan in [".avi", ".mp4"]:
                    listf.append(x + os.sep + each)
            elif os.path.isdir(each):
                find(os.path.join(x, each))
        os.chdir(os.pardir)
    except:
        pass

listf = []
find(m)
print(listf)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-26 14:57:59 | 显示全部楼层

我这个哪里有逻辑错误啊。总是输出最后一层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-26 15:07:33 | 显示全部楼层

试了下 把红色那个return去掉就成了,。。。但是想不通为什么
import os

m=input("输入目录:")

def find(x):   
    os.chdir(x)
    n=os.listdir(x)
    for each in n:
        if os.path.isfile(each)==True:
            kuozhan=each.split(".")[1]
            if kuozhan in ["avi","mp4"]:
                listf.append(x+os.sep+each)
        elif os.path.isdir(each)==True:
            return find(os.path.join(x,each))
    os.chdir(os.pardir)
  
listf=[]
find(m)
print(listf)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 20:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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