Python办公自动化-获取文件夹下文件的几种方法

本文介绍了Python中获取文件夹下文件名的五种方法,包括使用os模块的walk()函数和listdir()函数,以及路径与文件名的组合方式。每种方法都将文件名存储为列表,并将列表导出到CSV文件。虽然这些方法在单级目录下工作良好,但当遇到子目录时可能会出现问题,建议保持文件夹结构简单,不包含子目录以确保代码简洁易读。

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

在Python办公自动化的时候,经常会对本地文件进行一些操作。

这里介绍几种方法,可以快速获取对应文件夹下的文件,返回一个列表。
然后就可以用列表的切片方式,把列表里的文件名取出来,再进行操作。

方法1:

import os
import pandas as pd
path = r'D:\code\MyProject\百度OCR\IDcard\images'

def findAllFile(base):
    for root, dirs, files in os.walk(base):
        for f in files:
            yield base +'\\'+ f
fa = findAllFile(path)
file_list = []
for i in range(len(os.listdir(path))):
    f = next(fa)
    file_list.append(f)
    #这里的file_list就是存放文件名的列表了。
# 简单的例子,把文件名存储到csv文件中
df = pd.DataFrame(file_list, columns=['file_name'])
df.to_csv('file_list.csv', index=False)

运行之后得到CSV文件,打开后如下:
在这里插入图片描述

方法2

import os
import pandas as pd
path = r'D:\code\MyProject\百度OCR\IDcard\images'

file_list_2 = []
for i in range(len(os.listdir(path))):
    file_list_2.append(os.path.join(path, os.listdir(path)[i]))
    #这里的file_list_2就是存放文件名的列表了。
# 简单的例子,把文件名存储到csv文件中
df = pd.DataFrame(file_list_2, columns=['file_name'])
df.to_csv('file_list2.csv', index=False)

运行之后得到CSV文件,打开后如下:
在这里插入图片描述

方法3

import os
import pandas as pd
path = r'D:\code\MyProject\百度OCR\IDcard\images'

file_name = os.listdir(path)
file_list_3 = []
for i in range(len(file_name)):
    f = path + '\\' + file_name[i]
    file_list_3.append(f)
    #这里的file_list_3就是存放文件名的列表了。
# 简单的例子,把文件名存储到csv文件中
df = pd.DataFrame(file_list_3, columns=['file_name'])
df.to_csv('file_list3.csv', index=False)

作用跟上面的效果一样,不再截图

方法4

file_list_4 = []
for root, dirs, files in os.walk(path):
    for file in files:
        f = path +'\\' + file
        file_list_4.append(f)

df = pd.DataFrame(file_list_4, columns=['file_name'])
df.to_csv('file_list4.csv', index=False)

作用跟上面的效果一样,不再截图

方法5

file_list_5 = []
for root, dirs, files in os.walk(path):
    for file in files:
        file_list_5.append(os.path.join(root, file))

df = pd.DataFrame(file_list_5, columns=['file_name'])
df.to_csv('file_list5.csv', index=False)

作用跟上面的效果一样,不再截图

其中:
1、是用了yield,然后把结果next()出来
2、主要用os.listdir()函数
3、和2原理一样,跟2的区别在于路径+文件名的拼装的方式不一样
4、是用了os.walk()函数
5、是用了os.walk()函数,跟4的区别在于路径+文件名的拼装的方式不一样

写法都比较简单,没什么推荐用法。以后有空可以试试测一下效率。

最后:

以上几种方法可以获取文件夹下面的文件,并把文件名称组成一个列表。
但是,如果images文件夹下还有文件夹,就会出问题。
也有办法去捕获异常或者做一些判断避免这些错误。但是会增加代码复杂度。为了代码的简洁易读,建议就用多个文件夹做物理上的分离:images文件夹只放文件,不要放目录。
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值