跳转至

最后更新:2026-09-04 00:01

实验19 数据格式转换器

难度:★☆☆ | 预估时长:90 分钟

19.1 实验目的

  • 知识目标:理解 Python 环境与系统环境变量配置原理;认识 TXT、CSV、JSON 三种主流数据格式的结构特点、优缺点及企业应用场景,能熟练区分其适用场景。
  • 技能目标:掌握 PyCharm 终端与阿里云镜像源安装第三方库的方法;掌握 PyQt5 桌面 GUI 开发基础,能独立编写可视化窗口程序;结合 pandas 实现 TXT、CSV、JSON 三种格式的相互转换。
  • 素养目标:养成规范搭建开发环境、借助镜像源与报错信息独立排查安装与运行问题的工程素养。

19.2 实验环境

操作系统:Windows10 64位系统

开发解释器:Python 3.10.6 64位

开发工具:PyCharm社区版

依赖库:PyQt5(界面开发)、pandas(数据格式处理)

19.3 实验重难点

  • 重点:Python环境变量配置、第三方库镜像安装、三种数据格式结构认知、PyQt5基础界面搭建与格式转换功能实现。
  • 难点:文件读写与格式转换逻辑、桌面程序交互逻辑、解决库安装报错、文件格式解析异常问题。

参考Python安装和本地Pycharm配置指南.docx这个文档。

19.4 实验内容

19.4.1 任务1:配置环境并安装依赖库

1. 任务描述

参照Python安装和本地Pycharm配置指南.docx文件,完成 Python 3.10 与 PyCharm 社区版安装及环境变量配置,并通过阿里云镜像源安装 PyQt5 与 pandas 两个依赖库。

(空一行)

生活类比(必填项;若无新概念可删除此块)

阿里云镜像源就像小区门口的快递代收点:从官方 PyPI 仓库下载慢,换成就近的镜像点(mirrors.aliyun.com)就能大幅加快 pip install 的下载速度。

(空一行)

2. 实验步骤

(空一行)

  • 步骤 1:按指南完成 Python 3.10.6 与 PyCharm 社区版安装,并验证环境变量(命令行输入 python --version 应显示 3.10.6)。
  • 步骤 2:在 PyCharm 终端依次执行以下命令安装依赖库:
1
2
3
pip install pyqt5 -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

pip install pandas -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
  • pyqt5:桌面 GUI 界面框架
  • pandas:实现三种数据格式读写与互转

常见错误与排错(必填项;无坑则填 本任务常规操作即可,如无报错可跳过)

  • 若提示 Could not find a version 或下载超时:检查 -i 镜像地址拼写,并确认已加 --trusted-host mirrors.aliyun.com
  • python --version 不识别:检查系统环境变量 PATH 是否包含 Python 安装目录;
  • 若安装后导入报 ModuleNotFoundError:确认 PyCharm 使用的解释器与安装库的解释器为同一版本。

19.4.2 任务2:编写并运行数据格式转换器

1. 任务描述

新建 convert_tool.py,粘贴完整实训代码,实现一个可视化窗口程序,功能要求如下:

  1. 可视化窗口界面,简洁操作按钮;
  2. 支持选择本地 TXT / CSV / JSON 文件;
  3. 实现:TXT↔CSV、CSV↔JSON、JSON↔TXT 双向转换;
  4. 转换完成后自动保存到本地,提示转换成功;

(空一行)

生活类比(必填项;若无新概念可删除此块)

pandas 的 DataFrame 就像一张 Excel 表格:每一行是一条数据记录,每一列是一个字段;read_csv / to_json 等函数负责把这张"表格"在文件与内存之间搬运、转换。

(空一行)

2. 实验步骤

(空一行)

  • 步骤 1:在 PyCharm 中新建 convert_tool.py,粘贴以下完整代码:
  • 步骤 2:右键 convert_tool.py → Run 运行程序;
  • 步骤 3:点击【选择文件】,选取本地 TXT/CSV/JSON 文件;
  • 步骤 4:根据文件格式点击对应转换按钮,选择保存路径,自动生成转换后文件;
  • 步骤 5:弹窗提示转换成功,可打开文件验证格式。
# 导入所需库
import sys
import pandas as pd
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,
QPushButton, QFileDialog, QLabel, QMessageBox)
from PyQt5.QtCore import Qt

# 主窗口类
class FormatConvertWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()
        self.file_path = "" # 记录选中文件路径

    # 初始化界面
    def initUI(self):
        self.setWindowTitle("万能格式转换器 TXT/CSV/JSON")
        self.setFixedSize(400, 300)

        # 布局设置
        central_widget = QWidget()
        self.setCentralWidget(central_widget)
        layout = QVBoxLayout(central_widget)
        layout.setAlignment(Qt.AlignCenter)
        layout.setSpacing(15)

        # 控件
        self.label = QLabel("请先选择要转换的文件")
        self.label.setAlignment(Qt.AlignCenter)

        btn_select = QPushButton("1. 选择文件")
        btn_txt_csv = QPushButton("2. TXT 转 CSV")
        btn_csv_json = QPushButton("3. CSV 转 JSON")
        btn_json_csv = QPushButton("4. JSON 转 CSV")

        # 绑定点击事件
        btn_select.clicked.connect(self.select_file)
        btn_txt_csv.clicked.connect(self.txt_to_csv)
        btn_csv_json.clicked.connect(self.csv_to_json)
        btn_json_csv.clicked.connect(self.json_to_csv)

        # 添加到布局
        layout.addWidget(self.label)
        layout.addWidget(btn_select)
        layout.addWidget(btn_txt_csv)
        layout.addWidget(btn_csv_json)
        layout.addWidget(btn_json_csv)

    # 选择文件
    def select_file(self):
        file, _ = QFileDialog.getOpenFileName(self, "选择文件", "",
        "文件格式 (*.txt *.csv *.json)")
        if file:
            self.file_path = file
            self.label.setText(f"已选择:{file.split('/')[-1]}")

    # TXT转CSV
    def txt_to_csv(self):
        if not self.file_path.endswith(".txt"):
            QMessageBox.warning(self, "提示", "请选择TXT文件!")
            return
        df = pd.read_csv(self.file_path)
        save_path, _ = QFileDialog.getSaveFileName(self, "保存CSV", "", "CSV文件 (*.csv)")
        if save_path:
            df.to_csv(save_path, index=False, encoding="utf-8-sig")
            QMessageBox.information(self, "成功", "TXT 转 CSV 完成!")

    # CSV转JSON
    def csv_to_json(self):
        if not self.file_path.endswith(".csv"):
            QMessageBox.warning(self, "提示", "请选择CSV文件!")
            return
        df = pd.read_csv(self.file_path)
        save_path, _ = QFileDialog.getSaveFileName(self, "保存JSON", "", "JSON文件 (*.json)")
        if save_path:
            df.to_json(save_path, orient="records", force_ascii=False)
            QMessageBox.information(self, "成功", "CSV 转 JSON 完成!")

    # JSON转CSV
    def json_to_csv(self):
        if not self.file_path.endswith(".json"):
            QMessageBox.warning(self, "提示", "请选择JSON文件!")
            return
        df = pd.read_json(self.file_path)
        save_path, _ = QFileDialog.getSaveFileName(self, "保存CSV", "", "CSV文件 (*.csv)")
        if save_path:
            df.to_csv(save_path, index=False, encoding="utf-8-sig")
            QMessageBox.information(self, "成功", "JSON 转 CSV 完成!")

# 程序入口
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = FormatConvertWindow()
    window.show()
    sys.exit(app.exec_())

常见错误与排错(必填项;无坑则填 本任务常规操作即可,如无报错可跳过)

  • 若点击转换按钮提示 请选择TXT文件! 等:先点【选择文件】选中对应格式文件,再点转换;
  • pd.read_csv 解析报错:确认源文件确为对应格式,且路径无中文乱码;
  • 若打开转换后的 CSV 中文乱码:保存编码已用 utf-8-sig,请用 Excel「数据→从文本」导入或支持该编码的编辑器打开;
  • 若程序无反应:确认 PyQt5 与 pandas 均已正确安装到当前解释器。

19.5 实验总结

本次实验掌握了以下要点:

  1. 一是掌握了 Python 环境与 PyCharm 的安装配置原理,能独立解决环境变量与安装常见报错(对应知识/素养目标);
  2. 二是熟练使用阿里云镜像源安装第三方库,理解了镜像加速原理(对应技能目标);
  3. 三是认识了 TXT、CSV、JSON 三种格式的结构特点与适用场景(对应知识目标);
  4. 四是能用 PyQt5 搭建可视化窗口,并结合 pandas 实现三种格式的双向互转(对应技能目标)。

19.6 作业提交

  1. 提交地点:吾爱作业网
  2. 提交资料:
  3. 作业1:数据格式转换器运行成功界面截图【至少1张】;
  4. 作业2:转换前后文件对比截图【至少1张】。

19.7 知识检测

  • [ ] (填空)将 CSV 转为 JSON 时,pandas 使用 df.to_json(save_path, orient="records") 中的 orient="records" 表示按______形式输出。(记录列表(每条数据为一个对象)
  • [ ] (填空)TXT 转 CSV 为兼容 Excel 中文显示,保存编码应使用______。(utf-8-sig
  • [ ] (选择)使用阿里云镜像源安装第三方库时,需要加的参数是?A. -i B. -u C. -p D. -r
查看解析

正确答案:A。通过 -i https://mirrors.aliyun.com/pypi/simple/ 指定镜像源地址,并配合 --trusted-host 信任该主机。

本课相关资源

序号 资源名称 类型 说明
1 实验19-数据格式转换器-实验手册-无作业版本.docx Word 实验原始文档
2 python-3.10.6-amd64.exe 软件 软件工具
3 Python安装和本地Pycharm配置指南.docx Word 文档素材

实验素材下载

点击下方链接获取本节课全部资源(含课件、任务清单、安装包等): 🔗 夸克网盘

本站总访问 次 | 访客 人 | 本页阅读