利用Python将csv为ansi格式转换为utf-8(附赠GUI版本)

背景:

我们经常需要将csv文件进行格式转换,尤其是将格式为【csv-ansi】格式转换为【csv-utf-8】,那我们可以用python自带的csv库进行转换,而且转换的速度也不慢

方法1—python

  首先我们准备好待转换的csv数据,接着我们利用python读取它,友情提示:在读取前我们需要知道它现在的编码格式,因为我们需要用利用python中的csv库去读取它!!

代码

import csv
import os
import tkinter as tk
from tkinter import filedialog, messagebox

# 定义按钮点击事件函数
def select_input_folder():
    folder_path = filedialog.askdirectory(title="请选择 CSV 文件所在的文件夹")
    if folder_path:
        input_folder_var.set(folder_path)

def select_output_folder():
    folder_path = filedialog.askdirectory(title="请选择保存转换后的文件的文件夹")
    if folder_path:
        output_folder_var.set(folder_path)

def convert_files():
    input_folder = input_folder_var.get()
    output_folder = output_folder_var.get()

    if not input_folder:
        messagebox.showerror("错误", "请选择 CSV 文件所在的文件夹!")
        return

    if not output_folder:
        messagebox.showerror("错误", "请选择保存转换后的文件的文件夹!")
        return

    # 遍历选择的文件夹中的文件
    for f in os.listdir(input_folder):
        full_file_path = os.path.join(input_folder, f)
        if not os.path.isfile(full_file_path):
            continue  # 跳过非文件项

        try:
            with open(os.path.join(output_folder, f), 'w', newline='', encoding='utf-8') as f_w:
                writer = csv.writer(f_w)
                try:
                    with open(full_file_path, newline='', encoding='ansi') as csvfile:
                        reader = csv.reader(csvfile, delimiter=',', quotechar='"')
                        for row in reader:
                            writer.writerow(row)
                except UnicodeDecodeError:
                    # 如果不能以 ANSI 读取,则尝试用 UTF-8 读取
                    with open(full_file_path, newline='', encoding='utf-8') as csvfile:
                        reader = csv.reader(csvfile, delimiter=',', quotechar='"')
                        for row in reader:
                            writer.writerow(row)
            print(f, "转换成功!!!")
        except Exception as e:
            print(f, "转换失败:", e)
            messagebox.showerror("错误", f"文件 {f} 转换失败: {str(e)}")

    messagebox.showinfo("完成", "所有文件已转换完成!")

# 创建主窗口
root = tk.Tk()
root.title("CSV 文件转换工具")

# 设置窗口大小
root.geometry('400x270')

# 定义变量用于存储选择的文件夹路径
input_folder_var = tk.StringVar()
output_folder_var = tk.StringVar()

# 创建标签和输入框来显示选择的文件夹路径
tk.Label(root, text="CSV 文件所在的文件夹:").pack(pady=5)
tk.Entry(root, textvariable=input_folder_var, width=50).pack(pady=5)
tk.Button(root, text="选择文件夹", command=select_input_folder).pack(pady=5)

tk.Label(root, text="保存转换后的文件夹:").pack(pady=5)
tk.Entry(root, textvariable=output_folder_var, width=50).pack(pady=5)
tk.Button(root, text="选择文件夹", command=select_output_folder).pack(pady=5)

# 转换按钮
tk.Button(root, text="开始转换", command=convert_files).pack(pady=20)

# 进入主事件循环
root.mainloop()

方法2—记事本

【右击】用【记事本】打开一个csv文件,点击左上角【文件】——点击【另存为】——编码选择【UTF-8】——点击【保存】——是否替换点击【是】

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

结尾:

非常简单的小代码,分享给大家

如果你想阅读更多关Python办公自动化的知识点,欢迎查看我的专栏——>Python办公自动化

感谢大家阅读,希望能给个 关注+点赞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小庄-Python办公

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

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

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

打赏作者

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

抵扣说明:

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

余额充值