You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

os.walk()遍历存在文件的目录却返回None的技术求助

问题分析与解决

你的函数返回None的核心原因有两个:

  • return语句缩进错误:你把return file_list写在了os.walk的循环内部,这会导致第一次迭代就直接返回结果;但如果传入的目录无效(比如不存在、无访问权限),os.walk的循环根本不会执行,函数没有任何return语句,Python会默认返回None。
  • 未处理无效目录场景:当目录无法被遍历的时候,循环不执行,函数无返回值,最终返回None。

修复后的代码

遍历文件的版本

import os

def list_files(directory):
    file_list = []
    for _, _, files in os.walk(directory):
        for name in files:
            file_list.append(name)
    # 将return移到循环外部,确保无论是否遍历到内容都会返回列表
    return file_list

遍历目录的版本

import os

def list_dirs(directory):
    dir_list = []
    for _, dirs, _ in os.walk(directory):
        for name in dirs:
            dir_list.append(name)
    return dir_list

额外优化建议

如果需要返回完整文件路径而非仅文件名,可以修改append的内容,同时保留os.walk返回的当前目录路径root:

def list_files_with_path(directory):
    file_list = []
    for root, _, files in os.walk(directory):
        for name in files:
            file_list.append(os.path.join(root, name))
    return file_list

内容的提问来源于stack exchange,提问作者subodhpokhrel7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 10:02:38