一、使用os.walk()函数遍历文件夹
os.walk(top, topdown=True, οnerrοr=None, followlinks=False)函数可根据给定的路径,遍历该路径下的文件夹及文件,返回三个值:1.根目录root;2.文件夹dirs;3.文件files
代码示例
main_folder = 'D:/SDHSPRO/Green'
for root, dirs, files in os.walk(main_folder):
print(root, dirs, files)
二、使用endswith()函数判断excel后缀
str.endswith(‘.xlsx’, start, end) 判断字符串是否以指定字符或子字符串结尾
代码示例
file.endswitch('.xls')
file.endswitch('.xlsx')
三、使用文件对话框tkinter.filedialog选择路径
tk.filedialog.askdirectory(title=‘路径’)
四、整体代码
import os
from tkinter import filedialog
def select_main():
main_folder = tkinter.filedialog.askdirectory(title='路径')
all_data = []
for root, dirs, files in os.walk(main_folder):
for file in files:
if file.endswith(".xlsx"): # 只处理Excel文件,可以根据需要修改扩展名
file_path = os.path.join(root, file) # 包含文件名的路径
df = pd.read_excel(file_path, skiprows=1) # 跳过前一行无用数据
all_data.append(df)
elif file.endswith(".xls"):
file_path = os.path.join(root, file) # 包含文件名的路径
df = pd.read_excel(file_path, skiprows=1, engine='xlrd') # 跳过前一行无用数据
all_data.append(df)
print(all_data)
另:可使用df.drop_duplicates(subset=[‘起点’], keep=‘first’, inplace=True)对行去重
其中,subset=[‘起点’]是列名,可以指定多个列
keep的first: 除了第一次出现以外,删除重复项,last: 除了第一次出现以外,删除重复项。
inplace为True:直接在原始数据删除,False:不直接在原始数据删除,并生成一个副本