|
发表于 2025-4-2 22:48:28
|
显示全部楼层
本帖最后由 jackz007 于 2025-4-3 11:05 编辑
- def find_files(n):
- for each_dir in os.listdir(n):
- if os.path.isfile(each_dir): # 【错误】:each_dir 无根,os.path.isfile(each_dir) 恒为 False
- ......
- elif os.path.isdir(each_dir): # 【错误】:each_dir 无根,os.path.isdir(each_dir) 恒为 False
- ......
- find_files(each_dir) # 【错误】:each_dir 无根,就是一个不存在的子目录
复制代码
【参考代码】:
- import os
- def find_files(n):
- for each in os . listdir(n) :
- x = os . path . join(n , each) # 此句是关键,为 each 加上路径
- if os . path . isfile(x) : # 判定 each 是否为文件必须使用其完整路径
- ext = os . path . splitext(each)[1] . lower()
- if ext in ('.mp4' , '.rmvb' , '.rm' , '.avi' , '.mkv' , '.ts') :
- with open('VedoiList.txt','a') as fp :
- fp . write(x + '\n')
- elif os . path . isdir(x) : # 判定 each 是否为子目录也必须使用其完整路径
- find_files(x) # find_files() 的输入参数必须是完整的路径
- while True :
- a = input('请输入待查找的初始目录 [Exit]:') . strip()
- if a :
- if os . path . exists(a) and os . path . isdir(a) :
- if os . path . exists('VedoiList.txt') : # 由于按追加方式记录查找结果,为了避免多次记录累加,必须事先删除记录文件
- os . remove('VedoiList.txt') # 由于按追加方式记录查找结果,为了避免多次记录累加,必须事先删除记录文件
- find_files(a)
- break
- else :
- print('请输入一个目录\n')
- else :
- break
复制代码 |
|