Python 3.8如何检查指定文件夹内是否仅存在直接文件而非子文件夹
代码问题原因
os.walk每次迭代会返回固定格式的三元组(当前遍历目录路径, 目录下子文件夹列表, 目录下文件列表),该元组本身永远是非空的,你直接判断if files永远会得到True,所以一直提示有文件。- 你没有限定只检查201根目录的内容,
os.walk默认会递归遍历所有子目录,不符合只检查根目录直接存放文件的需求。
修正方案
方案1:更简单的实现(无需os.walk)
直接扫描目标目录的第一层条目判断是否存在文件即可,性能更好:
import os p = r"C:\sample_test\201" has_direct_files = False for entry in os.scandir(p): if entry.is_file(): has_direct_files = True break if has_direct_files: print(p, " files found in the directory.") else: print(p, " files NOT found in the directory.")
方案2:如果你一定要用os.walk实现
只取os.walk返回的第一组结果(对应传入的根目录内容),判断文件列表是否为空即可:
import os p = r"C:\sample_test\201" # 取第一层遍历结果,对应201根目录的内容 _, _, direct_files = next(os.walk(p)) if direct_files: print(p, " files found in the directory.") else: print(p, " files NOT found in the directory.")
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

