- 需求:近期,同事在处理文件的时候,常常需要从一堆文件中提取一些数据信息;
- 分析:由于每个文件夹下面的文件或文件夹多如牛毛,文件类型也很多种,需要针对不同文件类型做处理,人工处理是不现实的,只能用脚本处理了。
分析代码:
- 这里定义了一个类
ErgodicFolder
,里面有两个方法process_file
和ergodic_path_list
; process_file
:对不同文件类型进行处理;ergodic_path_list
:实现文件夹的遍历,先是逐个遍历目标文件夹,如果是文件则调用process_file
方法处理,如果是文件夹则调用函数自身继续遍历该文件夹。
# -*- coding:utf8 -*-
import os
# 定义一个遍历文件的方法
class ErgodicFolder:
def __init__(self):
pass
# 处理文件方法:针对不同文件类型做处理
def process_file(self, file):
FileType = file.split('.')[-1]
if FileType.lower() == 'xlsx': # 处理xlsx文件
print(os.getcwd()+os.sep+file)
if FileType.lower() == 'txt': # 处理txt文件
pass
if FileType.lower() == 'xlsx': # 处理pdf文件
pass
def ergodic_path_list(self, path):
os.chdir(path) # 进入到目标路径,类似命令行中的cd命令
file_lists = os.listdir() # 获取当前目录中所有文件夹和文件列表
for file in file_lists: # 遍历当前路径中的所有文件
if os.path.isfile(file): # 处理文件
self.process_file(file)
if os.path.isdir(file): # 如果是文件夹,则调用函数自身再次遍历该文件夹
self.ergodic_path_list(file)
# 当前文件夹遍历结束,返回上级目录继续遍历
os.chdir('..')
if __name__ == '__main__':
path = r'数据源'
E = ErgodicFolder()
E.ergodic_path_list(path)