方法一 : 利用函数 os.walk()
os.walk() 会返回三元元组 (dirpath, dirnames, filenames)
dirpath : 根路径 (字符串)
dirnames : 路径下的所有目录名 (列表)
filenames : 路径下的所有非目录文件名 (列表)
其中目录名和文件名都是没有加上根路径的,所以需要完整路径时需要将目录名或文件名与根路径连接起来。
示例 :
import os
path = "D:\\code"
for dirpath, dirnames, filenames in os.walk(path):
for filepath in filenames:
print(os.path.join(dirpath, filepath))
赠: 遍历指定文件夹下指定文件的个数
import os
'''
dirpath : 根路径 (字符串)
dirnames : 路径下的所有目录名 (列表)
filenames : 路径下的所有非目录文件名 (列表)
'''
m, n = 0, 0
path = input('请输入要遍历的文件夹的绝对路径:')
for dirpath, dirnames, filenames in os.walk(path):
# 遍历所有文件
for file in filenames:
# 获取文件后缀名
index = file.rfind('.')
# 遍历所有.java文件
if file[index:] == '.java':
m += 1
# 遍历所有.xml文件
if file[index:] == '.xml':
n += 1
print('-----------------------------')
print('该文件夹下.java文件共有:%d个' % m)
print('-----------------------')
print('该文件夹下.xml 文件共有:%d个' % n)
方法二 : 利用函数 os.listdir(), os.path.isdir(), os.path.isfile()
os.listdir() 可以列出路径下所有文件和目录名,但是不包括当前目录, 上级目录 以及子目录下的文件.
os.path.isfile() 和 os.path.isdir() 判断当前路径是否为文件或目录
示例 :
import os
def list_all_files(src_dir):
files = os.listdir(src_dir) # 获取文件夹下所有文件及文件夹
for file_name in files:
# 拼接为绝对路径
tmp_path = os.path.join(src_dir, file_name)
# 判断是否是文件夹
if os.path.isdir(tmp_path):
print('文件夹: %s' % tmp_path)
# 进入该文件夹进行遍历
list_all_files(tmp_path)
else:
print('文件:%s' % tmp_path)
path = 'D:\\code'
list_all_files(path)