第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.
共同学习,写下你的评论
评论加载中...
作者其他优质文章