python 批量把xls,csv文件格式换转为xlsx格式

本文档介绍了如何使用Python的os和pandas库批量将xls和csv文件转换为xlsx格式。提供了三个版本的代码,分别针对xls、csv和带有窗口组件的转换,并详细解释了每个版本的关键知识点。最后,通过实际操作展示了转换前后的效果。
摘要由CSDN通过智能技术生成

目录

前言

第一版 文件夹下所有xls转换为xlsx格式

第二版 文件夹下所有csv转换为xlsx格式

第三版 增加窗口组件,csv,xls转化为xlsx

总结





前言

        西瓜WiFi初来乍到,数据清洗入门,规范文件格式,特此总结。收到的文件中以excel xls和xlsx为主,其中夹杂着csv,jpg和png,清洗完数据统一为xlsx格式,导入系统。


提示:以下是本篇文章正文内容,下面案例可供参考



第一版 文件夹下所有xls转换为xlsx格式

知识点:

os.walk()  遍历文件夹;

os.path.join()合并路径;

os.path.spiltext()分解扩展名;

os.remove()删除文件;

pd.read_excel()pandas读xls;

to_excel()pandas写入xlsx;


代码:

import os
import pandas as pd

def xls_save_as_xlsx(data_path):
    for dirpath,dirname,filenames in os.walk(data_path): #os.walk()遍历文件
        for fname in filenames:
            file_name=os.path.join(dirpath,fname)  #os.path.join()合并路径
            folder,name=os.path.splitext(file_name)  #分解扩展名
            if file_name.endswith('.xls'):
                df=pd.read_excel(file_name)  #pandas读xls文件
                df.to_excel(f"{folder}.xlsx",index=False)  #pandas写入xlsx
                print(f'{file_name} 转换成功啦!O(∩_∩)O哈哈~')
                print('-----------------------------------------------------------------------------------------------------------')
                os.remove(file_name)  #删除原xls文件
    print('finisded...')
data_path=r"C:\Users\GDY\Desktop\测试" #文件路径
xls_save_as_xlsx(data_path)   #调用一下,转换完成

测试: 



第二版 文件夹下所有csv转换为xlsx格式



知识点:

os.walk()  遍历文件夹;

os.path.join()合并路径;

os.path.spiltext()分解扩展名;

os.remove()删除文件;

pd.read_csv()pandas读xls;

to_excel()pandas写入xlsx;

csv指定encoding


代码: 

import os
import pandas as pd
def csv_save_as_xlsx(data_path):
    for dirpath,dirname,filenames in os.walk(data_path): #os.walk()遍历文件
        for fname in filenames:
            file_name=os.path.join(dirpath,fname)  #os.path.join()合并路径
            if file_name.endswith('.csv'):
                df=pd.read_csv(file_name) 
                floder,name=os.path.splitext(file_name) #分割后缀
                df.to_excel(f"{floder}.xlsx",index=False)
                print(f'{file_name} 转换成功啦!O(∩_∩)O哈哈~')
                print('-----------------------------------------------------------------------------------------------------------')
                os.remove(file_name)
    print('finished...')
data_path=r"C:\Users\GDY\Desktop\测试"
csv_save_as_xlsx(data_path)  #调用一下,转换完成

测试:

 

说明:pandas 读取csv,需要指定编码方式,python默认编码方式是 UTF-8 ,个人理解csv编码可是UTF-8和GBK ,是GBK的时候需要指定encoding='gbk'

第三版 增加窗口组件,csv,xls转化为xlsx

 知识点:

os库的基本用法;

pandas库的读写;

win32com打开窗口;


代码:

import os
import pandas as pd
import easygui as eg
# xls文件转xlsx
def xls_save_as_xlsx(file_name):
    df=pd.read_excel(file_name)  #pandas读xls文件
    file,name=os.path.splitext(file_name)  #分解扩展名
    df.to_excel(f"{file}.xlsx",index=False)  #pandas写入xlsx
    print(f'{file_name} 转换成功啦!O(∩_∩)O哈哈~')
    print('-----------------------------------------------------------------------------------------------------------')
    os.remove(file_name)  #删除原xls文件
#csv文件转xlsx
def csv_save_as_xlsx(file_name):
    df=pd.read_csv(file_name)  #pandas读xls文件
    file,name=os.path.splitext(file_name)  #分解扩展名
    df.to_excel(f"{file}.xlsx",index=False)
    print(f'{file_name} 转换成功啦!O(∩_∩)O哈哈~')
    print('-----------------------------------------------------------------------------------------------------------')
    os.remove(file_name)  #删除原csv文件
#打开窗口,选择一个文件夹 
def pick_package():
    return eg.diropenbox()

if __name__ == "__main__":
    print('欢迎来到文件转换系统,程序正在启动...')
    print('请选择要转换的文件夹')
    data_path=pick_package()
    for dirpath,dirname,filenames in os.walk(data_path): #os.walk()遍历文件
        for fname in filenames:
            file_name=os.path.join(dirpath,fname)  #os.path.join()合并路径
            if file_name.endswith('.xls'):
                xls_save_as_xlsx(file_name)
            elif file_name.endswith('.csv'):
                csv_save_as_xlsx(file_name)
            else:
                print(f'跳过非xls文件:{file_name}')
    input('输入任意键退出')
    print('finished...')

测试:

转换前:

运行效果:

转换后:




总结

        常言道,好事多磨,通过os标准库,pandas库可以实现xls,xlsx,csv文件格式的相互转化。pandas是数据清洗分析的利器,可以实现各种复杂的操作,茅庐小子对python的探索才刚刚开始,多琢磨方能见真章。

        感谢您百忙之中的赏读,希望能有所收获,客官,点赞留言再走呗~或者一起探讨。。。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西瓜WiFi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值