鱼C论坛

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

[已解决]0基础学习python第30讲第三题

[复制链接]
发表于 2018-9-25 09:11:02 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 山有扶苏啊 于 2018-9-25 09:12 编辑

问题:编写一个程序,用户输入开始搜索的路径,查找该路径下(包含子文件夹内)所有的视频格式文件(要求查找mp4 rmvb, avi的格式即可),并把创建一个文件(vedioList.txt)存放所有找到的文件的路径

帮我看看我的程序哪里有问题,我的程序在文件夹内无法识别


#电影的正确打开方式(递归)
import os
def check_action_movie(path):
    result = []
    for item in os.listdir(path):
        deep_path = os.path.join(path, item)
        name = os.path.splitext(item)
        
        if name[1] in ['.avi', '.rmvb', '.mp4', 'MPG'] and os.path.isfile(deep_path):
            result.append(deep_path)
            
        if os.path.isdir(deep_path):
            check_action_movie(deep_path)
            
    result_write = 'moviefile.txt'
    result_file = open(result_write, 'w')
    result_file.writelines(result)
    result_file.close()


path = input("请输入待查找的初始目录: ")
check_action_movie(path)
最佳答案
2018-9-25 09:22:57
os.chdir(path)
不然到子目录不识别文件夹
还有result应该定义到函数外边,不然每次递归都置为[]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-25 09:22:57 | 显示全部楼层    本楼为最佳答案   
os.chdir(path)
不然到子目录不识别文件夹
还有result应该定义到函数外边,不然每次递归都置为[]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-25 09:23:42 | 显示全部楼层
塔利班 发表于 2018-9-25 09:22
os.chdir(path)
不然到子目录不识别文件夹
还有result应该定义到函数外边,不然每次递归都置为[]

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-25 09:26:56 | 显示全部楼层
deep-path是一个包含了文件名或者目录名的路径,当是个目录的时候缺一个分隔符,
我猜你输入初始path的时候也没有包含 \\
问题还出在有些文件夹不给访问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-25 09:33:22 | 显示全部楼层
  1. import os
  2. def check_action_movie(path):
  3.     result = []
  4.     for item in os.listdir(path):
  5.         deep_path = os.path.join(path, item)
  6.         name = os.path.splitext(item)
  7.         print(name,deep_path)
  8.         
  9.         if name[1] in ['.avi', '.rmvb', '.mp4', 'MPG'] and os.path.isfile(deep_path):
  10.             result.append(deep_path)
  11.             
  12.         if os.path.isdir(deep_path):
  13.             try:
  14.                 check_action_movie(deep_path)
  15.             except:
  16.                 continue
  17.             
  18.     result_write = 'moviefile.txt'
  19.     result_file = open(result_write, 'w')
  20.     result_file.writelines(result)
  21.     result_file.close()


  22. path = input("请输入待查找的初始目录: ")+os.sep

  23. check_action_movie(path)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 22:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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