Python读取路径下所有文件名

  • 一、函数与用法
  • 二、实战应用
      • ○ 获取当前路径下所有文件名
      • ○ 将路径下文件名存入Excel
      • ○ 获取路径下指定类型文件名
      • ○ 读取路径下所有bmp类型图片
  • 其他

by HPC_ZY

每次需要批量读取图片时,都要根据文件命名设计for循环实现,有时图片命名还没有规则就很难受。所以学习了一下读取文件名的方法,分享。

一、函数与用法

函数 os.walk(),这里就不讲其原理了,可以看这里Python os.walk() 方法。我们直接用实例讲解,假设我们有以下文件夹及文件

  1. 准备
    后面所有代码都包含这两句,就不再写了。
import os  
file_dir = ".\\test\\"
  1. 直接返回
p = os.walk(file_dir)
print(p)

结果如下,有点像C语言里的指针,看起来这样用不行

  1. 循环单输出
# 一个输出时      
iter = 0
for obj in os.walk(file_dir): 
    iter += 1						# 这两句就是为了显示更明了
    print("\n第"+str(iter)+"次")	# 没啥别的用哈
    print(obj) 

结果如下,可以看到obj是元组类型,结构为(root,dirs,files)
root:当前路径
dirs:当前路径下的子文件夹
files:当前路径下的文件

2. 循环三输出

# 三个输出时  
iter = 0
for root, dirs, files in os.walk(file_dir):  
    iter += 1						# 这两句就是为了显示更明了
    print("\n第"+str(iter)+"次")	# 没啥别的用哈
    print(root) 
    print(dirs)  
    print(files) 

结果如下,这样就分别获得各成员

  1. 获取子文件夹及文件完整路径
# 获得文件夹及文件完整路径
iter = 0
for root, dirs, files in os.walk(file_dir):
    iter += 1						# 这两句就是为了显示更明了
    print("\n第"+str(iter)+"次")	# 没啥别的用哈
    for name in dirs:
        print(os.path.join(root, name)) # 子文件夹
    for name in files:
        print(os.path.join(root, name))	# 文件

结果如下


二、实战应用

○ 获取当前路径下所有文件名

仅实际文件,不含文件夹

import os  

file_dir = ".\\test\\"
# 获得文件完整路径
for root, dirs, files in os.walk(file_dir):
    for name in files:
        print(os.path.join(root, name))	# 文件

结果如下


○ 将路径下文件名存入Excel

仅实际文件,不含文件夹

import os  
import xlwt

file_dir = ".\\test\\"
# 创建一个workbook 设置编码
workbook = xlwt.Workbook(encoding = 'utf-8')
# 创建一个worksheet
worksheet = workbook.add_sheet('files')
# 获取路径下文件名并写入excel
iter = -1;
for root, dirs, files in os.walk(file_dir):
    for name in files:
        iter += 1
        filename = os.path.join(root, name)
        worksheet.write(iter, 0, label = filename) # 参数对应 行, 列, 值
# 保存
workbook.save('filesname.xlsx')    

结果如下


○ 获取路径下指定类型文件名

import os  

file_dir = ".\\test\\"
filetype = '.bmp' # 指定类型
for root, dirs, files in os.walk(file_dir):
    for name in files:  
        if filetype in name:  
            print(name) 

结果如下,能获取到指定类型,就可以对其进行后续的操作了


○ 读取路径下所有bmp类型图片

可以改写成任意类型文件,任意操作

import os  
import matplotlib.pyplot as plt #plt 用于显示图片
import matplotlib.image as mpimg   #mpimg 用于读取图片

filetype = '.bmp' # 指定类型
for root, dirs, files in os.walk(file_dir):
    for name in files:  
        if filetype in name:  
            img = mpimg.imread(os.path.join(root, name))
            plt.imshow(img) # 显示图片
            plt.show()

其他

  1. 如果读出来的文件里有Thumbs.bd,不要慌那只是缓存的缩略图,如果你不想有这个东西,可以看看Win10怎么禁止生成thumbs.db文件 。

更多推荐

Python读取路径下所有文件名