鱼C论坛

 找回密码
 立即注册
查看: 989|回复: 5

课后题

[复制链接]
发表于 2019-5-11 10:58:56 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 第一浩男 于 2019-5-11 11:00 编辑

出现了这个问题,能打印确不能写入到文档内,想知道是函数哪里出错了
  1. 请输入目录:E:\\视频
  2. E:\视频\![MENSRUSH] MR-KR1131 20歳.avi
  3. E:\视频\![MENSRUSH] MS-275 .avi
  4. Traceback (most recent call last):
  5.   File "F:\Py\课堂练习.py", line 25, in <module>
  6.     target_file.writelines(return_list)
  7. TypeError: 'NoneType' object is not iterable
复制代码


在这个函数中:
  1. import os

  2. def func(top_file,target_file):
  3.     os.chdir(top_file)
  4.     all_files = os.listdir(os.curdir)
  5.    
  6.     for i in all_files:
  7.         if not os.path.isdir(i):
  8.             file_ext = os.path.splitext(i)[1]
  9.             
  10.             if file_ext in target_file:
  11.                 print(os.getcwd() + os.sep + i)
  12.                 video_list.append(os.getcwd() + os.sep + i)
  13.                
  14.         else:
  15.             func(i,target_file)
  16.             os.chdir(os.pardir)
  17.    

  18. top_file = input('请输入目录:')
  19. target_file = ('.avi','.mp4','.rmvb')
  20. video_list = []
  21. return_list = func(top_file,target_file)
  22. target_file = open('videolist.txt','w')
  23. target_file.writelines(return_list)
  24. target_file.close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-5-11 11:01:12 From FishC Mobile | 显示全部楼层
毛~片
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-11 11:06:19 | 显示全部楼层
本帖最后由 jackz007 于 2019-5-11 11:24 编辑

      这一句有问题
  1. return_list = func(top_file,target_file)
复制代码

      因为 func() 并没有返回值,函数返回的东西在列表 video_list 里面。

      我给修改了一下,使用绝对路径,可以越过无访问权限子目录,供楼主测试、参考。
  1. import os

  2. def func(top_file , target_file):
  3.     try:
  4.         for i in os . listdir(top_file):
  5.             x = os . path . join(top_file , i)
  6.             if os . path . isfile(x) :
  7.                 if os . path . splitext(i)[1] in target_file :
  8.                     video_list . append(x)
  9.             else:
  10.                 func(x , target_file)
  11.     except:
  12.         pass

  13. top_file = input('请输入目录:')
  14. target_file = ('.avi','.mp4','.rmvb')
  15. video_list = []
  16. func(top_file , target_file)
  17. if len(video_list) > 0 :
  18.     with open('videolist.txt','wt') as f :
  19.         for i in video_list :
  20.             print i
  21.             f . write(i + '\n')
  22. else:
  23.     print '没有找到文件。'
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-11 17:02:51 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-11 17:03:28 | 显示全部楼层
jackz007 发表于 2019-5-11 11:06
这一句有问题

      因为 func() 并没有返回值,函数返回的东西在列表 video_list 里面。

有点难  我得研究研究
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-11 18:44:08 | 显示全部楼层
第一浩男 发表于 2019-5-11 17:03
有点难  我得研究研究

问一下  你这个except就是把所有的错误都给忽略掉了的意思?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-15 18:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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