当前位置: 首页 > news >正文

Python在实际工作中的运用-指定目录内所有Excel文件转CSV

闲来无事浏览到《【办公自动化】使用Python批量处理Excel文件并转为csv文件》这篇博文,关于多层目录Excel转Csv在处理过程中略显繁复,而且灵活度不高,代码如下:

import pandas as pd
import os
from datetime import datetime
# 基础文件夹路径
base_dir = './sample_data'
 
# 循环遍历到每一个excel文件并修改其文件类型为csv
for first_floor in os.listdir(base_dir):  # 遍历第一层
    second_floor_dir = base_dir+'/'+first_floor  # 获取第二层的文件路径
    for second_floor in os.listdir(second_floor_dir):  # 遍历第二层
        third_floor_dir = base_dir+'/'+first_floor+'/'+second_floor  # 获取第三层的文件路径
        for third_floor in os.listdir(third_floor_dir):  # 遍历第三层
            fourth_floor_dir = base_dir+'/'+first_floor+'/'+second_floor+'/'+third_floor  # 获取第四层的文件路径
            for file_dir in os.listdir(fourth_floor_dir):  # 遍历第四层
                file_name = file_dir.split('.')[0]  # 获取excel文件名称
                file_suffix = file_dir.split('.')[1]  # 获取excel文件后缀
                print(fourth_floor_dir)
                if file_suffix=='xlsx' or file_suffix=='xls': # 判断文件是否是excel文件
                    df = pd.read_excel(fourth_floor_dir+'/'+file_dir)  # 读取excel文件
                    df['Time'] = pd.to_datetime(df['Time'])
                    df['Time'] = df['Time'].apply(lambda x:datetime.strftime(x,'%Y-%m-%d %H:%M:%S'))
                    df.to_csv(fourth_floor_dir+'/'+file_name+'.csv',index=False)  # 将excel文件保存为csv文件
                    os.remove(fourth_floor_dir+'/'+file_dir)  # 删除原来的excel文件

摘自《【办公自动化】使用Python批量处理Excel文件并转为csv文件》第二段“批量处理Excel文件并转为csv文件”

觉得此案例中处理过程比较死板,可以采用更简洁的代码完成此项工作,思路如下:首先可以通过遍历得到指定目录及其子目录下所有的Excel文件列表,然后再逐个将列表内的Excel文件转换为CSV保存到同一目录下即可。

完整代码如下:

import os
from pathlib import Path
import pandas as pd

# 遍历目录得到Excel表格列表
def find_table_files(directory, extensions=('.xlsx', '.xls')):
    table_files = []
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.endswith(extensions):
                table_files.append(os.path.join(root, file))
    return table_files

# 逐个将列表里表格转换为CSV文件
directory_path = f'd:\\xls'
files = find_table_files(directory_path)
for file in files:
    df = pd.read_excel(file)
    df.to_csv(f'd:\\xls\\ToCsv\\{Path(file).stem}.csv', index=False)
print(f'执行完毕')

相关文章:

  • Qt基于信号量QSemaphore实现的生产者消费者模型
  • 【Vue3】浅谈setup语法糖
  • 手机隐私数据彻底删除工具:回收或弃用手机前防数据恢复
  • golang安装(1.23.6)
  • 智能家居遥控革命!昂瑞微HS6621EM:用「芯」定义AIoT时代的语音交互标杆
  • 【0011】HTML其他文本格式化标签详解(em标签、strong标签、b标签、i标签、sup标签、sub标签......)
  • 【企业场景】上线的项目如何进行限流
  • 为什么打开串口会发送两次指令(加强版)
  • JeeWMS graphReportController.do SQL注入漏洞复现(CVE-2025-0392)
  • 【OpenCV C++】以时间命名存图,自动检查存储目录,若不存在自动创建, 按下空格、回车、Q、S自动存图
  • 18440二维差分
  • 【开源-鸿蒙土拨鼠大理石系统】鸿蒙 HarmonyOS Next App+微信小程序+云平台
  • 微信小程序读取写入NFC文本,以及NFC直接启动小程序指定页面
  • AIP-155 请求标识
  • 标签使用笔记
  • sqli-lab
  • 【SpringBoot】数据访问技术spring Data、 JDBC、MyBatis、JSR-303校验
  • 使用通义万相Wan2.1进行视频生成
  • 钉钉宜搭智能车辆管理系统:AIoT与低代码融合的数字化解决方案
  • 基于Three.js的3D赛车游戏开发实战详解
  • 怎么做县城分类信息网站/青岛网络推广公司
  • 南京淄博网站建设工作室/昆明seo博客
  • 公司网站建设应符合哪些法规/品牌推广策划
  • 政府网站建设与管理/seo引擎优化专员
  • 入境美国前做登记叫啥网站/北京网络推广有哪些公司
  • 苏州建设网站的公司/微信朋友圈营销文案