鱼C论坛

 找回密码
 立即注册
查看: 719|回复: 3

求问

[复制链接]
发表于 2025-4-2 20:19:12 | 显示全部楼层
鱼油的代码存在几个关键问题,下面给出修正方案:


主要问题分析
  • 路径拼接错误:未使用os.path.join导致路径判断失效
  • 递归逻辑错误:遇到第一个文件就return终止遍历
  • 扩展名判断错误:os.path.splitext返回的是元组需取[1]
  • 未处理隐藏目录:直接遍历可能遇到权限问题


修正代码
[code=python]
import os

def find_files(root_dir):
    for file_name in os.listdir(root_dir):
        full_path = os.path.join(root_dir, file_name)  # 关键!拼接完整路径
        
        if os.path.isfile(full_path):
            ext = os.path.splitext(file_name)[1].lower()  # 取扩展名并转小写
            if ext in ('.mp4', '.rmvb', '.avi'):
                with open('VideoList.txt', 'a', encoding='utf-8') as f:
                    f.write(full_path + '\n')
                    
        elif os.path.isdir(full_path):
            find_files(full_path)  # 递归时传递完整路径

if __name__ == '__main__':
    target_dir = input('请输入待查找的初始目录:')
    if os.path.isdir(target_dir):
        find_files(target_dir)
        print("查找完成,结果已保存到VideoList.txt")
    else:
        print("错误:输入的路径不是有效目录")
[/code]

改进说明
  • 使用os.path.join保证路径正确性
  • 递归时传递完整路径参数
  • 将扩展名转为小写统一判断
  • 使用with open保证文件安全关闭
  • 增加编码参数避免乱码问题
  • 支持.rmvb扩展名(原代码拼写错误.rvmb)


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-7 03:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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