为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
人工智能

第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等。

第5次提问:

图片上传失败啦~

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

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

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

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

file filename.xlsx

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

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

图片上传失败啦~
Pycharm编辑器可以自动检测文件的编码格式,并返回相应的编码信息,很智能。

我已投稿参与慕课网4月【对话ChatGPT】活动,所属战队【小咖3号】,快来加入我的战队,投稿分享快乐吧!
爱生活,爱编程,爱自己。
that’s all.

点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消