|
|
发表于 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 小助理,如未能正确解答您的问题,请继续追问。 |
|