当我们需要批量处理一个文件夹下的多个文件时,可以使用Python来快速实现。下面是实现提取指定类型文件的步骤:
1. 利用os模块获取指定文件夹下所有文件的路径
首先需要导入os模块,使用os.listdir(path)方法来获取指定路径下的所有文件列表。可以使用以下代码获取指定路径下所有文件的路径:
import os
path = './files' # 指定文件夹路径
files = os.listdir(path) # 获取指定文件夹下所有文件列表
2. 筛选指定类型文件
筛选某种类型的文件,可以使用split()函数获取文件的后缀名,然后与需要筛选的后缀名进行比较。可以使用以下代码获取在指定路径下筛选出指定类型文件的路径列表:
import os
path = './files' # 指定文件夹路径
ext = '.txt' # 指定需要筛选的文件类型
files = os.listdir(path) # 获取指定文件夹下所有文件列表
# 通过比较文件后缀名,筛选出指定类型文件的路径列表
file_paths = [os.path.join(path, file) for file in files if os.path.splitext(file)[-1] == ext]
这段代码将所有文件的完整路径保存到了file_paths列表中。
3. 示例说明
示例一:批量读取文件夹下的所有txt文件
假设我们有一个文件夹files,包含以下文件:
files/
├── a.txt
├── b.txt
└── c.csv
我们可以使用以下代码来批量读取文件夹下所有txt文件的内容,并存储到一个列表中:
import os
path = './files' # 指定文件夹路径
ext = '.txt' # 指定需要筛选的文件类型
files = os.listdir(path) # 获取指定文件夹下所有文件列表
# 通过比较文件后缀名,筛选出指定类型文件的路径列表
file_paths = [os.path.join(path, file) for file in files if os.path.splitext(file)[-1] == ext]
# 批量读取txt文件的内容,并存储到一个列表中
file_contents = []
for file_path in file_paths:
with open(file_path, 'r') as f:
file_contents.append(f.read())
最终,我们将会得到一个名为file_content的列表,其中存储了所有txt文件的内容。
示例二:将指定文件夹的所有png图片重命名
假设我们有一个文件夹images,包含以下文件:
images/
├── a.png
├── b.jpg
└── c.png
我们可以使用以下代码将images文件夹下所有png图片重命名,文件名将以数字连续递增的形式命名。
import os
path = './images' # 指定文件夹路径
ext = '.png' # 指定需要筛选的文件类型
files = os.listdir(path) # 获取指定文件夹下所有文件列表
# 通过比较文件后缀名,筛选出指定类型文件的路径列表
file_paths = [os.path.join(path, file) for file in files if os.path.splitext(file)[-1] == ext]
# 批量重命名png文件
i = 1
for file_path in file_paths:
new_filename = f'{i}.png'
new_path = os.path.join(path, new_filename)
os.rename(file_path, new_path)
i += 1
最终,我们将会得到一个文件夹images,其中包含2个png文件,它们的文件名分别为1.png和2.png。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现批量提取指定文件夹下同类型文件 - Python技术站