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

news2024/10/2 12:18:20

第1次提问:

我:我想使用Python批量转换.csv文件为.xlsx文件,请你提供代码

它:好的,以下是使用Python批量转换.csv文件为.xlsx文件的代码:

import os
import glob
import pandas as pd

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

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

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

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

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

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

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

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

该函数的实现和之前的xls_to_xlsx()函数类似,只需要将文件类型从.xls改为.csv,然后使用pd.read_csv()函数读取.csv文件即可。
今天的代码跟昨天的有何不同?
同一个人,在同一个chat消息的上下文中提问,昨天让它写函数,今天它就把代码实现为一个功能函数,我们在向AI学习的同时,它也在向我们学习。

第2次提问:

我:请你编写csv_to_xlsx的测试用例,使用unittest

它:好的,以下是使用unittest编写csv_to_xlsx()函数的测试用例:

import os
import glob
import pandas as pd
import unittest

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

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

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

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

        # 将文件名从.csv改为.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 TestCsvToXlsx(unittest.TestCase):
    def setUp(self):
        self.test_folder = 'test_folder'
        os.mkdir(self.test_folder)

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

        # 调用函数
        csv_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_csv_to_xlsx()函数中创建了一个测试文件,并调用csv_to_xlsx()函数来将该文件转换为.xlsx文件。最后,在tearDown()函数中删除测试文件和测试文件夹。

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

python test_csv_to_xlsx.py

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

执行上述代码,报错信息如下:

第3次提问:

我:self._reader = parsers.TextReader(src, **kwds) File "pandas\_libs\parsers.pyx", line 547, in pandas._libs.parsers.TextReader.__cinit__ File "pandas\_libs\parsers.pyx", line 636, in pandas._libs.parsers.TextReader._get_header File "pandas\_libs\parsers.pyx", line 852, in pandas._libs.parsers.TextReader._tokenize_rows File "pandas\_libs\parsers.pyx", line 1965, in pandas._libs.parsers.raise_parser_error UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte 是什么原因?请你修复错误

它:这个错误通常是因为读取的.csv文件的编码格式与Python默认的utf-8编码不一致导致的。为了修复这个错误,我们需要在pd.read_csv()函数中指定正确的编码格式。常见的编码格式包括utf-8、gbk、gb2312等。如果你不确定文件的编码格式,可以使用文本编辑器或命令行工具查看文件的编码格式。

以下是修复该错误的代码:

import os
import glob
import pandas as pd

def csv_to_xlsx(path, encoding='utf-8'):
    """
    将指定路径下所有的.csv文件转换为.xlsx文件

    Args:
        path (str): .csv文件所在文件夹的路径
        encoding (str): 文件编码格式,默认为'utf-8'

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

    # 循环遍历所有.csv文件
    for file in glob.glob('*.csv'):
        # 读取.csv文件,指定编码格式
        df = pd.read_csv(file, encoding=encoding)

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

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

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

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

在上述代码中,我们增加了一个encoding参数,用于指定文件的编码格式。如果没有指定编码格式,则默认使用utf-8编码。你可以根据实际情况修改encoding参数的值。

经过尝试,编码方式应设置为 gbk
def csv_to_xlsx(path, encoding='gbk')

文件对比图:

第4次提问:
我:如果你不确定文件的编码格式,可以使用文本编辑器或命令行工具查看文件的编码格式
怎么做呢?

它:在Windows中,你可以按照以下步骤查看文件的编码格式:

右键点击文件,选择“打开方式” → “记事本”。
在记事本中打开文件。
点击“文件” → “另存为”。
在“编码”下拉菜单中选择“ANSI”、“Unicode”或“UTF-8”,并查看文件是否可以正确打开。
在Linux或Mac OS X系统中,你可以使用file命令来查看文件的编码格式。在终端中输入以下命令:

file filename.csv

其中filename.csv为你要查看的文件名。运行命令后,终端会返回该文件的编码格式信息。常见的编码格式包括ASCII text、UTF-8 Unicode text、ISO-8859 text等。
和我一起践行做中学,写过程笔记。by 代码写注释&只是为了好玩
keagen
第5次提问:

我:查看文件的编码格式还有其他方法吗?你都说出来

它:是的,查看文件的编码格式还有其他方法,例如:

使用文本编辑器:打开文件,如果可以正确显示中文或其他非英文字符,那么文件的编码格式可能是UTF-8或UTF-16等Unicode编码格式。如果文件中出现乱码或其他异常情况,则可能是其他编码格式,例如GB2312、GBK等。

使用命令行工具:在命令行中使用file命令查看文件类型和编码格式,例如:

file filename.xlsx

其中filename.xlsx是你要查看的文件名。该命令将返回文件的类型和编码格式信息。

使用第三方工具:有一些第三方工具可以帮助你查看文件的编码格式,例如Notepad++、Sublime Text等文本编辑器,或者chardet、enca等命令行工具。这些工具可以自动检测文件的编码格式,并返回相应的编码信息。
我们使用Pycharm编辑器打开,点击 Reload in GBK:


Pycharm编辑器可以自动检测文件的编码格式,并返回相应的编码信息,很智能。

that’s all.

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

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

相关文章

MATLAB数值运算(六)

目录 实验目的 实验内容 原创代码,仅供参考,不要直接CV呀 ~_~ 实验目的 1)掌握定义符号对象和创建符号表达式的方法; 2)掌握符号运算基本命令和规则; 3)掌握符号表达式的运算法则以及符号矩阵…

A100 Jeston TX1TX2使用教程-接口说明

EdgeBox_Umate_A100是一款嵌入式人工智能计算机,能够为各类终端设备赋予人工智能的能力,降低终端智能的开发门槛。EdgeBox_Umate_A100搭载了移动处理器——NVIDIA Jetson TX1,并且兼容TX2,是最适合边缘计算的高性能平台。 A100 算…

【Javascript - 力扣每日一题】13. 罗马数字转整数

题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为…

【黑马2023大数据实战教程】VMWare虚拟机部署HDFS集群详细过程

文章目录 部署HDFS集群1.配置workers:2.配置hadoop-env.sh文件3.配置core-site.xml文件4.配置hdfs-site.xml文件准备数据目录分发Hadoop文件夹配置环境变量授权为hadoop用户格式化文件系统错误排查方法!! 视频:黑马2023 VMWare虚拟机部署HDFS集群 注意!这…

linux代码检测工具valgrind之内存检测memcheck

1、安装命令: $ sudo apt-get install valgrind 安装成功如下: 检测版本命令:$ valgrind --version 2、valgrind检测工具tool介绍 (1)Memcheck是一个内存错误检测器。 (2)Cachegrind是缓存…

C++语法(19)---- 模拟AVL树

C语法(18)---- set和map_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/130228232?spm1001.2014.3001.5501 目录 1.AVL树的概念 2.节点定义 3.AVL树的类实现 1.类定义 2.insert 1.全代码实现 2.思考角度 3.平衡因…

【Redis】Redis十大数据类型—哈希hash

介绍 Hash 是一个键值对(key - value)集合,其中 value 的形式入:value[{field1,value1},...{fieldN,valueN}]。Hash 特别适合用于存储对象。 Hash和String对象的区别 内部实现 Hash 类型的底…

SpringMVC 接收前端传递的参数

SpringMVC 接受前端传参 1、前端传参需要注意请求的Content-type, 主要使用的有两种: application/x-www-form-urlencodedapplication/json application/x-www-form-urlencoded是浏览器的默认编码格式 ,对于原生的form 表单提交参数,就是使用…

【大数据之Hadoop】十六、MapReduce之Join

1 Reduce Join Map端: 为来自不同表或文件的key/value对,打标签以区别不同来源的记录。然后用连接字段作为key,其余部分和新加的标志作为value,最后进行输出。 Reduce端: 在每一个分组当中将那些来源于不同文件的记录…

【剑指 offer】调整数组顺序使奇数位于偶数前面

✨个人主页:bit me👇 ✨当前专栏:算法训练营👇 调 整 数 组 顺 序 使 奇 数 位 于 偶 数 前 面 核心考点:数组操作,排序思想的扩展使用 描述: 输入一个整数数组,实现一个函数来调…

vue2数据响应式原理(3) 带你手写一个defineReactive响应式函数并理解其本质

然后 我们来学一下defineReactive函数 defineReactive其实是一个要声明的函数 基本都是作为一个响应式函数 因为vue的使用比较经典 因此 也成了 响应式的一个代表函数 而定义它的意义在于 defineProperty不好用 具体不好用在哪呢? 我们打开上文用到的项目 将output…

第六讲 循环结构

我们在写程序的时候,极有可能遇到需要重复执行某条指令或某些指令的场景,例如我们需要每隔1秒钟在屏幕上输出一次“hello, world”并持续输出一个小时。如下所示的代码可以完成一次这样的操作,如果要持续输出一个小时,我们就需要把…

Javaee spring jdbctemplate查询数据库,基于纯注解实现

为啥要用纯注解方式呢&#xff1f;因为xml中代码还是有点多&#xff0c;纯注解可以解决该问题 现在要做的很简单&#xff0c;就是用新建的SpringConfig这个类去替代xml 在测试类中加载核心配置类 SpringConfig类中 Configuratio Spring.xml配置类 ComponentScan <!--开…

Linux搭建Web服务器(三)——服务器编程基本框架以及事件处理模式

目录 0x01 服务器编程基本框架 0x02 两种高效的事件处理模式 Reactor 模式 Proactor 模式 模拟Proactor 模式 0x01 服务器编程基本框架 虽然服务器程序的种类繁多&#xff0c;但是其基本框架都是一样的&#xff0c;不同之处是在于处理逻辑。对于我们在这个服务器的搭建可以…

基于Jenkins实现Docker应用的持续集成与部署

先决条件 1. 服务器部署安装有docker 在docker应用开发中最常见的就是开发Dockerfile文件&#xff0c;可以使用代码仓库来管理它。 而在企业私有开发环境中是无法访问公有代码仓库&#xff08;如Github&#xff09;的。这时可以搭建私有代码仓库。 部署安装svn私有仓库 安…

GPT-4 验明真身的三个经典问题:快速区分 GPT-3.5 与 GPT-4

现在已经有很多 ChatGPT 的套壳网站&#xff0c;以下分享验明 GPT-4 真身的三个经典问题&#xff0c;帮助你快速区分套壳网站背后到底用的是 GPT-3.5 还是 GPT-4。 测试问题 1&#xff1a;What is tomorrow in relation to yesterday’s today&#xff1f;&#xff08;昨天的当…

《Shunted Transformer: Shunted Self-Attention》CVPR 2022 oral

论文链接&#xff1a;https://openaccess.thecvf.com/content/CVPR2022/papers/Ren_Shunted_Self-Attention_via_Multi-Scale_Token_Aggregation_CVPR_2022_paper.pdf 代码链接&#xff1a;https://github.com/OliverRensu/Shunted-Transformer​ 1. 动机 视觉转换器(ViT)模型…

vscode怎么对选定的代码格式化?ctrl+k,ctrl+f(格式化代码)

先选中代码&#xff1a; 然后按CTRL K 再按CTRLF 也可以先选择要格式化的代码块&#xff0c;ctrlshiftp&#xff0c;搜索format&#xff0c;然后第二个就是&#xff1a;

助你掌握搜索神器,10个实用的Elasticsearch查询技巧

前言 Elasticsearch是一个非常流行的搜索引擎&#xff0c;已经成为了许多企业的首选解决方案。然而&#xff0c;我们要想成为一个优秀的程序员&#xff0c;就必须掌握各种查询技巧。本文将向大家介绍10个实用的Elasticsearch查询技巧&#xff0c;并配上详细的代码示例&#xff…

Python基础实战1-简单介绍python

1 Python介绍 Python是一门优雅而健壮的编程语言&#xff0c;它继承了传统编程语言的强大性和通用性&#xff0c;同时也借鉴了脚本语言和解释语言的易用性。 1.1 Python的历史 Python是由创始人贵铎范罗萨姆&#xff08;Guido van Rossum&#xff09;在阿姆斯特丹于1989年圣…