python遍历文件夹下所有文件

本文详细介绍了如何使用Python的os库遍历指定目录及其子目录下的所有文件和子目录,包括遍历根目录下的文件而不深入子目录的方法,以及如何获取文件的绝对路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

话不多说,上代码:

遍历文件内的所有文件(包括子目录内的文件)

import os

file = r'D:\dataset\makelabels\demo'

for root, dirs, files in os.walk(file):
    for file in files:
        path = os.path.join(root, file)
        print(path)

只遍历根目录下的文件(不包括子目录内的文件)

import os

file = r'D:\dataset\makelabels\demo'

for root, dirs, files in os.walk(file):
    if root != file:
        break
    for file in files:
        path = os.path.join(root, file)
        print(path)

新版讲解

以前写的旧版讲解太繁琐了,重写一版本。

演示的文件结构:

--demo(dir)
	--test1(dir)
		--a(dir)
			--aa(dir)
		--b(dir)
		--c(dir)
	--test2(dir)
		--2.txt
	--1.txt

首先我们打印root信息:

import os
file = r'D:\dataset\makelabels\demo'
for root, dirs, files in os.walk(file):
    print(root)

在这里插入图片描述
可见,root在循环中不断从根目录进入子目录。

然后我们打印dirs信息:

file = r'D:\dataset\makelabels\demo'
for root, dirs, files in os.walk(file):
    for dir in dirs:
        path = os.path.join(root,dir)
        print(dir)
        print(path)

在这里插入图片描述
dirs表示当前root目录中子目录的名称。

输出所有的文件地址:

import os
file = r'D:\dataset\makelabels\demo'
for root, dirs, files in os.walk(file):
    for file in files:
        path = os.path.join(root, file)
        print(file)
        print(path)

在这里插入图片描述

files表示当前root目录下的所有文件名称的数组


旧版讲解

用os库比较简单

1.最常见的需求,遍历获取文件夹下包括所有子文件夹下的所有文件的路径。
利用os.walk(path)函数:

import os

root_path = r'/Users/TNC/Desktop/bg_'
for i in os.walk(root_path):
	print(i)

(注:字符串前加r,防止被转义,例如出现’\t’···)
在这里插入图片描述
在这里插入图片描述

很容易看出:
1.会打印一至多个tuple,第一个tuple是描述主文件夹,后面的都是描述主文件夹下子文件夹. (注:在子目录下创建一个新文件夹,二级目录依旧可以被打印出来;因此,得知os.walk(root_path)可以获取描述主目录的tuple,以及子文件夹和子文件夹下所有更高级的子文件夹,顺序是:遍历一级目录下的第一个子文件夹,然后一次迭代遍历该子文件下所有的更高级子文件夹,全部结束后遍历一级目录下的第二个子文件夹······,深度优先?)

2.关于每一个tuple都描述着一个文件夹的信息,每个tuple都有3个元素:

for i in os.walk(path):
    print(type(i[0]))
    print(type(i[1]))
    print(type(i[2]))

在这里插入图片描述
第一个元素(str类型)存放着该文件夹的绝对路径;
第二个元素(list类型)存放着所有子文件夹的名称;
第三个元素(list类型)存放着所有当前目录下文件的名称;

显然:第一个元素的路径和第三个元素list中的一个文件名相加,就是一个文件的绝对路径。

常见情景:循环获取当前主文件下的所有文件的绝对路径:

import os

#主文件夹路径
root_path = path=r'/Users/TNC/Desktop/bg_'

for i in os.walk(root_path):
    for j in i[2]:
    	#i[0]是当前文件夹的绝对路径,j是文件名
    	path = os.path.join(i[0],j)
        

注:os.path.join将其中的字符串中间添加’/‘连接起来
例如:os.path.join(str1,str2,str3)
类似于 str1 + ‘/’ +str2 +’/’ +str3
注意不要自行在其中元素末尾添加’/‘,若是其中元素末尾添加’/',则不会再与后面的元素连接
在这里插入图片描述

另外:
使用os.listdir(path)函数能得到文件夹下所有文件(包括文件夹)的名称:

for i in os.listdir(root_path):
     print(i)

只是名称····
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值