【使用ChatGPT自动化】批量转换.xls文件为.xlsx文件

news2024/9/23 3:28:37


第1次提问:
我:我想使用Python批量转换.xls文件为.xlsx文件,请你提供代码
它:
当涉及到批量处理文件时,我们通常需要使用Python中的os模块和glob模块。os模块用于管理文件和目录,glob模块用于匹配文件路径名。下面是将所有.xls文件转换为.xlsx文件的Python代码:和我一起践行做中学,写过程笔记。by 代码写注释&只是为了好玩
keagen

import os
import glob
import pandas as pd

# 设置工作目录
os.chdir(r'path/to/your/folder')

# 循环遍历所有.xls文件
for file in glob.glob('*.xls'):
    # 读取.xls文件
    df = pd.read_excel(file)
    
    # 将文件名从.xls改为.xlsx
    new_filename = os.path.splitext(file)[0] + '.xlsx'
    
    # 将数据写入新文件
    df.to_excel(new_filename, index=False)
    
    # 删除旧文件
    os.remove(file)
    
    print(f"{file} 已转换为 {new_filename}")

将以上代码保存为.py文件并运行,注意替换代码中的"path/to/your/folder"为你的文件所在文件夹的路径。执行后,所有的.xls文件都将被转换为.xlsx文件。注意:如果你的.xls文件中包含多个工作表,则需要设置参数来指定需要转换的工作表。
输入路径和输出路径分开

第2次提问:

我:请将上述代码封装成函数

它:好的,以下是将代码封装为函数的示例代码:

import os
import glob
import pandas as pd

def xls_to_xlsx(path):
    """
    将指定路径下所有的.xls文件转换为.xlsx文件
    """
    # 设置工作目录
    os.chdir(path)

    # 循环遍历所有.xls文件
    for file in glob.glob('*.xls'):
        # 读取.xls文件
        df = pd.read_excel(file)

        # 将文件名从.xls改为.xlsx
        new_filename = os.path.splitext(file)[0] + '.xlsx'

        # 将数据写入新文件
        df.to_excel(new_filename, index=False)

        # 删除旧文件
        os.remove(file)

        print(f"{file} 已转换为 {new_filename}")

可以将以上代码保存为.py文件,然后在其他Python脚本中导入该函数,并调用它以将指定路径下的所有.xls文件转换为.xlsx文件。例如:

from my_utils import xls_to_xlsx

# 调用函数,将所有.xls文件转换为.xlsx文件
xls_to_xlsx(r'path/to/your/folder')

请注意替换代码中的"path/to/your/folder"为你的文件所在文件夹的路径。
第3次提问:

我:给函数xls_to_xlsx加注释,加docstring,并给出调用示例
它:好的,以下是添加注释、docstring并给出调用示例的代码:

import os
import glob
import pandas as pd

def xls_to_xlsx(path):
    """
    将指定路径下所有的.xls文件转换为.xlsx文件

    Args:
        path (str): .xls文件所在文件夹的路径

    Returns:
        None
    """
    # 设置工作目录
    os.chdir(path)

    # 循环遍历所有.xls文件
    for file in glob.glob('*.xls'):
        # 读取.xls文件
        df = pd.read_excel(file)

        # 将文件名从.xls改为.xlsx
        new_filename = os.path.splitext(file)[0] + '.xlsx'

        # 将数据写入新文件
        df.to_excel(new_filename, index=False)

        # 删除旧文件
        os.remove(file)

        # 打印转换信息
        print(f"{file} 已转换为 {new_filename}")

# 示例调用
if __name__ == '__main__':
    xls_to_xlsx(r'path/to/your/folder')

在上面的示例代码中,我们添加了docstring来描述函数的输入参数和返回值。另外,我们也在代码中加入了一些注释来解释每一步的具体操作。

示例调用中的if __name__ == '__main__':语句用于判断当前文件是否被作为主程序直接运行,如果是,则执行xls_to_xlsx()函数,如果不是,则不执行。这是一种良好的编程习惯,可以确保模块的可重用性和灵活性。
和我一起践行做中学,写过程笔记。by 代码写注释&只是为了好玩
keagen
第4次提问:

我:给函数xls_to_xlsx编写测试用例,使用unittest
它:好的,以下是使用unittest编写测试用例的代码:

import os
import glob
import pandas as pd
import unittest

def xls_to_xlsx(path):
    """
    将指定路径下所有的.xls文件转换为.xlsx文件

    Args:
        path (str): .xls文件所在文件夹的路径

    Returns:
        None
    """
    # 设置工作目录
    os.chdir(path)

    # 循环遍历所有.xls文件
    for file in glob.glob('*.xls'):
        # 读取.xls文件
        df = pd.read_excel(file)

        # 将文件名从.xls改为.xlsx
        new_filename = os.path.splitext(file)[0] + '.xlsx'

        # 将数据写入新文件
        df.to_excel(new_filename, index=False)

        # 删除旧文件
        os.remove(file)

        # 打印转换信息
        print(f"{file} 已转换为 {new_filename}")

class TestXlsToXlsx(unittest.TestCase):
    def setUp(self):
        self.test_folder = 'test_folder'
        os.mkdir(self.test_folder)

    def test_xls_to_xlsx(self):
        # 创建测试数据
        df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
        df.to_excel(f'{self.test_folder}/test.xls', index=False)

        # 调用函数
        xls_to_xlsx(self.test_folder)

        # 检查转换后的文件是否存在
        self.assertTrue(os.path.exists(f'{self.test_folder}/test.xlsx'))

    def tearDown(self):
        # 删除测试数据
        os.remove(f'{self.test_folder}/test.xlsx')
        os.rmdir(self.test_folder)

if __name__ == '__main__':
    unittest.main()

在上面的示例代码中,我们使用unittest.TestCase来编写测试用例。在setUp()函数中创建一个测试文件夹,然后在test_xls_to_xlsx()函数中创建一个测试文件,并调用xls_to_xlsx()函数来将该文件转换为.xlsx文件。最后,在tearDown()函数中删除测试文件和测试文件夹。

在运行该测试用例之前,请确保你的Python环境中安装了pandas和unittest库。运行该测试用例的命令为:

python test_xls_to_xlsx.py

测试用例应该执行成功,并输出一些信息。

开始编码。
目录结构:

xls文件内容:


运行报错:

第5次提问:

我:os.chdir(path) NotADirectoryError: [WinError 267] 目录名称无效。: 'D:\\abc\\chatgpt_test\\全国总人口10年数据 -备份.xls'
它:
您提供的错误消息表明您尝试更改为使用该os.chdir()功能的目录路径存在问题。具体来说,就是你指定的目录名不合法。

path该错误的一个可能原因是该函数的参数中指定的目录os.chdir()不存在。仔细检查您是否输入了正确的目录路径以及该目录是否存在。

此错误的另一个可能原因是参数path指向文件而不是目录。在这种情况下,您应该使用os.path.dirname()函数从文件路径中提取目录路径,然后再将其传递给os.chdir(). 例如:

import os

file_path = 'D:\\abc\\chatgpt_test\\全国总人口10年数据 -备份.xls'
dir_path = os.path.dirname(file_path)
os.chdir(dir_path)

file_path此代码使用从变量中提取目录路径os.path.dirname(),然后使用 将当前工作目录更改为生成的目录os.chdir()。

我恍然大悟,我应该这样调用就对了:

查看转完文件格式后的内容是否正常:

基本功能实现,但仍有一些细节问题需要处理。
不过,这写代码的速度确实很快。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/431445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Visual Studio Code 1.77 发布!

欢迎使用 Visual Studio Code 2023 年3月版。此版本有许多更新,其中一些主要亮点包括: 无障碍改进:新的悬停、通知和 Sticky Scroll 快捷键 复制 GitHub 深度链接:在编辑器内创建永久链接和 HEAD 链接 笔记本保存格式&#xff1…

软件测试流程进阶----四年软件测试总结

工作四年了,我一直希望让自己每年对测试的理解更深入一层。工作一年的时候,我谈轮了自己对各种测试的理解,这一年来,虽然对那些理概念的有所加强,自我感觉没有什么质的变化。前些天听我们公司的一位测试经理讲《敏捷测…

精准抓住核心要点!!!十名面试官总结出这样一份面试通关答案,还不赶紧开始“作弊”通关!!!

金三银四求职季,但最近很多朋友私信说: 熬过了去年的寒冬,却没躲过如今的内卷; 打开Boss直拒,一排已读不回; 大部分回复的都是外包,薪资低于预期,对技术水平要求却远超从前&#x…

大数据和 CRM系统:它们如何帮助中小企业?

作为中小企业主,你可能在想,"大数据与我有什么关系?"但如果你使用某些类型的业务应用,即使预算很少,你也可以从大数据中获益。一个最好的例子是客户关系管理(CRM)系统,它提…

二极管反向恢复过程详细解析

二极管反向恢复过程,现代脉冲电路中大量使用晶体管或二极管作为开关, 或者使用主要是由它们构成的逻辑集成电路。而作为开关应用的二极管主要是利用了它的通(电阻很小)、断(电阻很大) 特性, 即二极管对正向及反向电流表现出的开关作用。二极管和一般开关的不同在于,…

在线帮助中心对企业的作用及解决方案

帮助中心对于一款互联网产品来说,重要性不言而喻。随着公司客户服务水平的不断提高,越来越多的公司逐渐重视客户服务。一个好的在线帮助中心必定能提高客户的转化率。那么,在线帮助中心对企业的帮助和作用有哪些呢? 在线帮助中心的作用 1.快…

3.10——常类型

常类型的引入,就是为了既保证数据共享又防止数据被改动。常类型是指使用类型修饰符const说明的类型,常类型的变量或对象成员的值在程序运行期间是不可改动的。 常引用 如果在说明引用时用const修饰,则被说明的引用为常引用。如果用常引用作为…

adb环境变量配置

adb环境变量配置Android一. 简介二. 环境变量配置1.JDK安装2.SDK安装3. 资源共享4. 配置环境变量4.1 方式一:4.2 方式二:5. adb常用命令的使用6. 结果Android List of ADB Commands and Fastboot Commands for Android 如果你是一个android用户&#xf…

paddleocr,windows pip 安装巨坑 lanms 库

安装 lanms 最佳参考: paddleocr,windows pip 安装巨坑 lanms 库 防丢失,直接抄录的一份 paddleocr最后几个库一个比一个难装,特别是 lanms 库,巨难装,拒绝任何花里胡哨,十分钟,三步…

HTML5 <menu> 标签

HTML5 <menu> 标签 实例 HTML5 <menu>标签用于定义菜单列表。 两个菜单按钮系列选项实例&#xff08;"File" 和 "Edit"&#xff09;&#xff1a; <menu type"toolbar"> <li> <menu label"File"> &…

Linux-初学者系列——篇幅4_系统运行相关命令

系统运行相关命令-目录一、关机重启注销命令1、重启或者关机命令-shutdown语法格式&#xff1a;常用参数&#xff1a;01 指定多久关闭/重启系统02 指定时间关闭/重启系统03 实现立即关闭/重启系统04 取消关闭/重启系统计划2、重启或者关机命令-halt/poweroff/reboot/systemctl语…

Lucene Solr Elasticsearch三者之间的关系,怎么选?

Lucene简介&#xff1a; Lucene主要用于构建文本搜索应用程序&#xff0c;包括Web搜索引擎、桌面搜索工具和商业应用程序。它提供了诸如单词分析、查询解析、搜索结果排序等功能&#xff0c;可以轻松地在大量文档中快速搜索和查找相关信息。 Lucene具有以下特点&#xff1a; …

Linux -- 进阶 Web 服务器 基础前瞻 ( 一 )

目录 WWW 简介 &#xff1a; 组件一个网站得需要哪些东西呢 &#xff1f;&#xff1f; 1 得有 响应用户申请网页服务 的软件 2 服务器主机 3 那就需要数据了 4. 浏览器 预备知识 &#xff1a; 网址及HTTP 简介 &#xff1a; URL : http 请求方法 &#xff1a;…

关于使用云渲染的五大优势

在不影响质量或性能的情况下节省时间、金钱和资源&#xff0c;对于需要在通常较短且严格的期限内创建高质量 3D 内容的专业人士来说&#xff0c;云渲染都是最好的选择&#xff01;云渲染作为数字媒体生产的最新趋势&#xff0c;与传统的渲染农场和机器相比具有许多优势&#xf…

每个程序员都应该知道的 5 个基本 Matlab 提示和技巧

当今软件开发和数据分析领域中&#xff0c;Matlab 是一种十分常用的工具。然而&#xff0c;对于许多程序员而言&#xff0c;它的高级特性可能并不为人所知。在本文中&#xff0c;我们将分享每个程序员都应该知道的 5 个基本 Matlab 提示和技巧&#xff0c;以帮助你更好地使用这…

【红队APT】反朔源流量加密CSMSF证书指纹C2项目CDN域前置

文章目录背景交代&#xff1a;常见红蓝对抗中红队面临问题&#xff1a;蓝队发现处置情况&#xff1a;NC-未加密&加密后-流量抓包对比MSF-流量通讯特征修改-证书-openssl解决HTTPS-SSL通讯证书被特征标示问题impersonate_ssl模块CS-流量通讯特征修改-证书指纹-keytool1.修改…

【C++】哈希的应用——bitset(STL)位图

哈希的应用——bitset(STL)位图 文章目录 哈希的应用——bitset(STL)位图一、bitset的介绍1.位图的引入2.位图的概念3.位图的应用 二、bitset的使用1.bitset的构造方式2.bitset成员函数的使用3.bitset运算符的使用 三、bitset位图的模拟实现1.位图的基本框架2.成员函数2.1.构造…

【Linux】进程学习(1)---理解进程概念

文章目录 冯诺依曼体系结构理解冯诺依曼体系结构 操作系统概念与定位概念计算机管理模型计算机的软硬件体系结构图系统调用和库函数概念 进程基本概念描述进程--PCBtask_struct内容分类组织进程 冯诺依曼体系结构 数学家冯诺依曼提出了计算机制造的三个基本原则&#xff0c;即采…

gnome换回纵向切换工作区

效果&#xff1a; 思路 最新的debian / ubuntu中用的gnome 4.x&#xff0c;工作区切换变成了左右切换&#xff0c;习惯了上下&#xff0c;真的很不舒服。 而且优化选项里也把设置开关取消掉了&#xff0c;解决方案是使用Vertical overview这个扩展&#xff1a; ## 安装扩展管…

5.1 大数定律

我的理解&#xff1a; 大数定律的基本思想是&#xff1a;当我们有足够的样本数量时&#xff0c;样本的平均值可以相对准确地估计总体的平均值。这是因为随着样本数量的增加&#xff0c;样本平均值的波动会逐渐减小&#xff0c;从而趋向于总体平均值。 我们可以通过一个简单的…