项目树:

整体架构:

python + pyqt5 + qtdesigner

IDE:pycharm

开发步骤:

  1. 先通过qtdesigner设计界面后,到pycharm中解析为.py文件。项目中名称为div.py

  2. 在新建文件分割.py ,主要写的是分割功能、界面槽和信号的绑定等功能代码
  3. div.ico是项目用到的图标资源
  4. div.ui是qtdesigner的文件,通过它可解析出.py文件。
  5. resource.qrc为图标资源映射文件,在项目所在文件夹中新建txt后输入如下代码:
<RCC><qresource prefix="/"><file>div.ico</file></qresource>
</RCC>

保存,并修改后缀名为.qrc,通过pycharm插件工具PyRCC,生成resource.py,在主功能py文件中导入即可。此步骤主要是为了使项目打包为exe时,图标资源也同步被打包成功。

附上div.py:

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'div.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QIconclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.setFixedSize(788, 543)MainWindow.setWindowIcon(QIcon(':/div.ico'))self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit.setGeometry(QtCore.QRect(10, 10, 581, 51))self.lineEdit.setObjectName("lineEdit")self.pushButton = QtWidgets.QPushButton(self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(600, 10, 181, 51))font = QtGui.QFont()font.setFamily("宋体")font.setPointSize(12)self.pushButton.setFont(font)self.pushButton.setObjectName("pushButton")self.textEdit = QtWidgets.QTextEdit(self.centralwidget)self.textEdit.setGeometry(QtCore.QRect(10, 70, 581, 411))self.textEdit.setObjectName("textEdit")self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_2.setGeometry(QtCore.QRect(600, 310, 181, 171))font = QtGui.QFont()font.setFamily("微软雅黑")font.setPointSize(20)font.setBold(True)font.setWeight(75)self.pushButton_2.setFont(font)self.pushButton_2.setObjectName("pushButton_2")icon2 = QIcon(':/div.ico')self.pushButton_2.setIcon(icon2)self.pushButton_2.setIconSize(QtCore.QSize(42, 42))self.progressBar = QtWidgets.QProgressBar(self.centralwidget)self.progressBar.setGeometry(QtCore.QRect(10, 482, 771, 31))self.progressBar.setProperty("value", 0)self.progressBar.setObjectName("progressBar")self.label = QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(600, 100, 181, 31))font = QtGui.QFont()font.setFamily("宋体")font.setPointSize(10)self.label.setFont(font)self.label.setAutoFillBackground(False)self.label.setFrameShadow(QtWidgets.QFrame.Plain)self.label.setObjectName("label")self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_2.setGeometry(QtCore.QRect(600, 140, 181, 41))self.lineEdit_2.setObjectName("lineEdit_2")MainWindow.setCentralWidget(self.centralwidget)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "文件分割助手V1.0 by LX"))self.pushButton.setText(_translate("MainWindow", "选择文件路径"))self.pushButton_2.setText(_translate("MainWindow", "分割"))self.label.setText(_translate("MainWindow", "请输入每个文件的行数"))

附上文件分割.py:

import div
import PyQt5.QtWidgets as qw
import winreg
import sys
import pandas as pd
import math
import resource
#忽略告警
import warnings
warnings.filterwarnings("ignore")class myForm(qw.QMainWindow, div.Ui_MainWindow):def __init__(self):super().__init__()self.setupUi(self)self.pushButton.clicked.connect(self.load_file)self.pushButton_2.clicked.connect(self.div_file)# 获取桌面路径def get_desktop(self):self.key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')desktop_url = r'' + winreg.QueryValueEx(self.key, 'Desktop')[0]return desktop_url# 打开文件def load_file(self):  # 加载CSV文件fileOpen = qw.QFileDialog.getOpenFileName(None, "打开文件", self.get_desktop(), "All Files (*)")self.lineEdit.setText(fileOpen[0])# print(self.lineEdit.text())if (len(self.lineEdit.text()) != 0):self.textEdit.append('已选择文件!')  # 追加写入文本else:self.textEdit.append('未选择文件!')  # 追加写入文本def div_file(self):  # 分割文件# 设置进度条self.progressBar.setValue(0)data = pd.read_csv(self.lineEdit.text(), encoding='gbk', error_bad_lines=False, sep=None)  # 不加后面参数,会报错self.textEdit.append('已载入文件!')  # 追加写入文本one_file_count = int(self.lineEdit_2.text())if one_file_count > data.shape[0]:return qw.QMessageBox.question(self, '糟糕', "你输入的数字太大,超过了文件的总行数!", qw.QMessageBox.Yes)if one_file_count > 1010000:return qw.QMessageBox.question(self, '糟糕', "你输入的数字太大,超过了单个CSV文件的容量!", qw.QMessageBox.Yes)pac = math.ceil(data.shape[0] / one_file_count)  # 向上取整start = 0end = one_file_countfor i in range(pac):if i == (pac - 1):end = data.shape[0]data2 = data.iloc[start:end]data2.to_csv(self.get_desktop() +'\分割后文件_{}'.format(i+1) + '.csv', index=0)start += one_file_countend += one_file_countpgb_value = (i+1)/pac * 100self.progressBar.setValue(pgb_value)  # 设置进度条# print("已分割到第{0}个文件!".format(i + 1))# print('全部分割完成,请到桌面查收!')self.textEdit.append('文件分割完成,请到桌面查收!')  # 追加写入文本qw.QMessageBox.question(self, '恭喜', "文件分割完成,请到桌面查收!", qw.QMessageBox.Yes)if __name__ == '__main__':app = qw.QApplication(sys.argv)w = myForm()w.show()sys.exit(app.exec_())

通过以上几步,一个简单的CSV文件分割工具即开发完成,分享给大家。以下是软件界面:

CSV文件分割工具开发-python版相关推荐

  1. txt格式转换成prg_Advanced CSV Converter v6.69下载(csv文件转换工具)

    CSV文件是一个纯文本文件,有的时候,由于使用需求,需要将CSV转换为其他的格式使用,在这里,小编向大家推荐这款Advanced CSV Converter转换工具,它支持将CSV格式的文件转换成DB ...

  2. python 简单检索器_python实现文件搜索工具(简易版)

    在python学习过程中有一次需要进行GUI 的绘制, 而在python中有自带的库tkinter可以用来简单的GUI编写,于是转而学习tkinter库的使用. 学以致用,现在试着编写一个简单的磁文件 ...

  3. python实现文件搜索工具(简易版)

    在python学习过程中有一次需要进行GUI 的绘制, 而在python中有自带的库tkinter可以用来简单的GUI编写,于是转而学习tkinter库的使用. 学以致用,现在试着编写一个简单的磁文件 ...

  4. 用Python一键批量将任意结构的CSV文件导入 SQLite_用 Python 使用 Google Colab?岂止是炫酷...

    选自Medium 作者:Towards AI Team 机器之心编译 机器之心编辑部 这篇文章教你如何使用 Google Colab,更好地利用免费资源. Google Colab 是一个免费的 Ju ...

  5. python将csv文件拆分_在python中将一个csv拆分为多个文件

    我在python中有一个约5000行的csv文件,我想将其拆分为五个文件. 我为此写了一个代码,但是没有用 import codecs import csv NO_OF_LINES_PER_FILE ...

  6. python加载csv文件去重_用python读写和处理csv文件

    读取 这里我们使用pandas包来读取csv文件,pandas处理csv文件十分方便,是我认为是目前最方便的读取方式. 首先安装pandas pip install pandas 安装好了之后我们读取 ...

  7. Duplicate Manager Pro for Mac(重复文件查找工具)破解版安装

    1.Duplicate Manager Pro 简介 Duplicate Manager Pro 是 macOS 系统上一款重复文件查找工具,可以帮你在 Mac 电脑上查找出磁盘上面的重复文件,然后让 ...

  8. 文件搜索工具(Python实现)

    文章目录 文件搜索工具介绍 代码实现 实现思路 os.walk函数 os.path.join函数 代码整体编写 打包成exe程序 效果展示 文件搜索工具介绍 文件搜索工具能够基于名称快速定位匹配的文件 ...

  9. shell读取excel_[PHP 开源类库]simple-Excel — 兼具优雅与性能的Excel和CSV文件读写工具...

    该扩展包可让你轻松读取和写入简单的 Excel 和 CSV 文件.在后台使用生成器来确保低内存使用,即使在处理大型文件时也是如此. 这是有关如何读取 Excel 或 CSV 的示例. SimpleEx ...

  10. python读取第二行_从CSV文件读取第二行到Python

    我有一个csv文件:Index,X1,X2,X3,X4,X5,Y 1,-1.608052,-0.377992,1.204209,1.313808,1.218265,1 2,0.393766,0.630 ...

最新文章

  1. NLP之word2vec:利用 Wikipedia Text(中文维基百科)语料+Word2vec工具来训练简体中文词向量
  2. camvid数据集介绍_fastai 官方教程之查看数据
  3. 电路中的这些符号标识,你真的明白吗?
  4. tp5 queue.php,tp5(think-queue)消息队列+supervisor进程管理实现队列常驻进程
  5. sf | 空间矢量对象的“聚合”操作
  6. 11.29晚 心情 晴 既然选择了Linux这条路就要坚持走下去
  7. 【从C到C++学习笔记】类声明/公有私有保护成员/数据抽象和封装
  8. shell中引号的应用
  9. php怎么画五星红旗,php基于GD库画五星红旗的方法,phpgd库五星红旗
  10. air202c语言编程,Air202学习 五
  11. zookeeper启动报错:JMX enabled by default,服务未启动
  12. 2022元旦首发,2021年阿里春招+秋招+社招+校招Java后端开发面试题汇总,看完轻松收下offer
  13. cf1月24日服务器维护更新公告,VIRUS网游公会[1月24日更新资料]
  14. 单目视觉技术、双目视觉技术、多目视觉技术
  15. 学习日记day38 字体设计排版
  16. Android异常大全
  17. css绘制自定义数据仪表盘
  18. sklearn和tensorflow
  19. 一个人赶着鸭子去每个村庄卖,每经过一个 村子卖去所赶鸭子的一半又//一只。 这样他经过了 七个村子后还剩 两只鸭子,问问他出发时共赶多少//只鸭子?经过每个村子卖出多少只鸭子?
  20. jdbc(跟着宝哥学java:jdbc) jdbc概念,铁打步骤,jdbc封装,预编译对象,sql攻击

热门文章

  1. 初次Blender建模遇到的问题与解决方法(二)
  2. Blender几个简单建模
  3. Linux安装GaussDB数据库图文,gaussdb数据库怎么样?如何安装?
  4. 大型服装集团BI决策系统的分析主题模块
  5. display:The Wayland Book 节选dmabufXDG
  6. wireshark执行XDG问题
  7. 耐得住寂寞,拥得了繁华
  8. NVIDIA TX2 安裝pytorch1.8
  9. AM调制时域代码matlab,AM调制的FPGA实现
  10. 图像修复(拖影、失焦、雨雾、模糊)deblurGAN 论文解读