鱼C论坛

 找回密码
 立即注册
查看: 669|回复: 10

新人求解~~

[复制链接]
发表于 2019-3-21 18:19:27 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 机械蠕虫 于 2019-3-21 18:30 编辑

def find_video(path):
    import os
    import os.path
    result = []
    list_top = list(os.walk(path))
    for each in list_top:
        for each_file in each[2]:
            if os.path.splitext(each_file)[1] == ('.mp4' or '.avi' or '.rmvb'):
                result.append(os.path.join(each[0], each[1], each_file))

    return result

path = input('请输入路径:')
print(find_video(path))
            
这是一个求出视频文件路径的程序,为啥输出结果总是[]空的,懵逼QAQ!            
            
            
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-3-21 18:19:59 | 显示全部楼层
路径输入反斜杠已经转义了~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-21 18:31:19 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-3-21 18:33:12 | 显示全部楼层
你可以在每一段for下面打印一下,看看每一步的输出是否达到了自己的要求
这个用来差错非常好用

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-21 18:36:27 | 显示全部楼层
一X一 发表于 2019-3-21 18:33
你可以在每一段for下面打印一下,看看每一步的输出是否达到了自己的要求
这个用来差错非常好用

问题就在 if 的条件os.path.splitext(each_file)[1]上,我打印了一下为[],但是搞不懂为什么会是空的~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-21 18:39:25 | 显示全部楼层
result.append(os.path.join(each[0], each_file))
还有你的逻辑只能判断.mp4
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-21 18:45:10 | 显示全部楼层
我看着像是你的逻辑出的问题,把‘or‘的条件分开写,因为你这种写法是查到的文件是否等于一个元组,很显然不等于嘛’,所以返回为空
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-21 18:58:40 | 显示全部楼层
一X一 发表于 2019-3-21 18:45
我看着像是你的逻辑出的问题,把‘or‘的条件分开写,因为你这种写法是查到的文件是否等于一个元组,很显然 ...

            if os.path.splitext(each_file)[1] == '.mp4':
                result.append(os.path.join(each[0], each_file))
               
            elif os.path.splitext(each_file)[1] == '.avi':
                result.append(os.path.join(each[0], each_file))
               
            elif os.path.splitext(each_file)[1] == '.rmvb':
                result.append(os.path.join(each[0], each_file))

这么写感觉有问题,太繁琐了,有更好的写法吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-21 19:00:16 | 显示全部楼层
机械蠕虫 发表于 2019-3-21 18:58
if os.path.splitext(each_file)[1] == '.mp4':
                result.append(os.path.jo ...

换成成员操作符 ‘in’,是不是更简单一点
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-21 19:04:44 | 显示全部楼层
一X一 发表于 2019-3-21 19:00
换成成员操作符 ‘in’,是不是更简单一点

是的哦,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-21 19:18:17 | 显示全部楼层
摸了半天,发现os.walk()是没有返回值的,list()只能用来在交互器中查看~~感谢6、9楼的纠正~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-14 17:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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