python learning-109- fusion de plusieurs fichiers CSV

 

Préface

   Cet article est une opération sur la fusion de fichiers CSV. Scénarios applicables: les données de plusieurs employés et étudiants sont soumises, puis un résumé est fait. Il est trop difficile d'utiliser Excel pour copier et coller, donc j'utilise les pandas de python pour coder La préparation de l'inclusion de l'utilisation de try, sauf pour la gestion simple des exceptions, les invites de message d'erreur, etc. La procédure est divisée en deux:

(1): exécution du code source

(2): implémenté par l'interface graphique

1. Exécution du code source

#coding:utf-8
import pandas as pd
import os
import datetime
def csv_fileMarge(inputfilePath, outputfile):
    '''
    执行csv utf-8格式的合并
    :param inputfilePath: 文件目录
    :param outputfile: 最终文件目录与名字
    :return:
    '''
    informationLog=''
    #定义列名
    columns = ['姓名', '学校', '学号', '成绩', '四级', '六级', '性别', '985', '211']
    dataframe = pd.DataFrame([columns])
    dataframe.to_csv(outputfile, encoding='utf-8',index=False, header=0)
    #合并文件
    rightCount=0
    errorCount=0
    for file in os.listdir(inputfilePath):
        try:
            data=pd.read_csv(inputfilePath+'/'+file,encoding='utf-8')
            dataframe = pd.DataFrame(data)
            dataframe.to_csv(outputfile, mode='a', index=False, encoding='utf-8', header=0)
            rightCount+=1
        except:
            print(file + '文件有误')
            errorCount+=1
    print('文件合并完成 ',rightCount,'个文件成功',errorCount,'个文件有误')



def gettime():
    '''
    :return: 当前时间的规范形式
    '''
    now_time = datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S')
    return now_time




if __name__ == '__main__':
    inputfilePath='F:/csv文件合并'
    outputfile='data2/合并文件'+gettime()+'.csv'
    csv_fileMarge(inputfilePath,outputfile)


2. Exécution de l'interface graphique GUI

#coding:utf-8
import os
import wx
import pandas as pd
import os
import datetime
contents='运行完成'
#选择文件
def OnOpen(a):
    dialog = wx.DirDialog(None, '选择一个文件目录',os.getcwd())
    if dialog.ShowModal() == wx.ID_OK:
        filename.SetValue(dialog.GetPath())
    dialog.Destroy()

def OnSave(a):
    filePath=filename.GetValue()
    contents.SetValue(filePath)
    # contents=contents+'增加'

def gettime():
    '''
    :return: 当前时间的规范形式
    '''
    now_time = datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S')
    return now_time

def csv_fileMarge(a):
    inputfilePath=filename.GetValue()
    outputfile='E:/CSV文件合并/合并文件'+gettime()+'.csv'
    #定义列名
    columns = ['姓名', '学校', '学号', '成绩', '四级', '六级', '性别', '985', '211']
    dataframe = pd.DataFrame([columns])
    dataframe.to_csv(outputfile, encoding='utf-8',index=False, header=0)
    #合并文件
    informationLog = ''
    rightCount=0
    errorCount=0
    for file in os.listdir(inputfilePath):
        try:
            data=pd.read_csv(inputfilePath+'/'+file,encoding='utf-8')
            dataframe = pd.DataFrame(data)
            dataframe.to_csv(outputfile, mode='a', index=False, encoding='utf-8', header=0)
            rightCount+=1
        except:
            # print(file + '文件有误')
            informationLog += file + ' 文件有误, '
            errorCount+=1
    # print('文件合并完成 ',rightCount,'个文件成功',errorCount,'个文件有误')
    informationLog += ' 文件合并完成: ' + str(rightCount) + ' 个文件成功, ' + str(errorCount) + ' 个文件有误 '
    contents.SetValue(informationLog)



#------------------------------------------------------------------------------------GUI编程---
#定义程序类对象
app = wx.App()

#创建顶层窗口
win = wx.Frame(None, title='CSV文件合并 结果目录:E:/CSV文件合并 (先把 E:/CSV文件合并 文件夹建立)',size=(600, 400))
#面板
bkg = wx.Panel(win)

loadButton = wx.Button(bkg,label = u'选择文件目录')
saveButton = wx.Button(bkg,label = u'合并')
loadButton.Bind(wx.EVT_BUTTON, OnOpen)
saveButton.Bind(wx.EVT_BUTTON, csv_fileMarge)

#显示文件路径
filename = wx.TextCtrl(bkg)
#显示文章抽取结果
contents = wx.TextCtrl(bkg, style=wx.TE_MULTILINE)

hbox = wx.BoxSizer()

hbox.Add(filename, proportion=1,flag=wx.EXPAND)
hbox.Add(loadButton, proportion=0, flag=wx.LEFT, border=5)
hbox.Add(saveButton, proportion=0, flag=wx.LEFT, border=5)

vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(hbox, proportion=0, flag=wx.EXPAND | wx.ALL, border=5)
vbox.Add(contents,  proportion=1, flag=wx.EXPAND | wx.LEFT | wx.BOTTOM | wx.RIGHT, border=5)


bkg.SetSizer(vbox)


win.Show()
app.MainLoop()
#------------------------------------------------------------------------------------GUI编程---

3. fichier exe du package python

1) Installez deux packages     

pip install pywin32
pip install PyInstaller

2) Commande

pyinstaller -F -i ico图片路径 py文件路径
#如下:
pyinstaller -F -w -i manage.ico app.py

-F:打包为单文件
-w:Windows程序,不显示命令行窗口
-i:是程序图标
app.py是你要打包的py文件

En cas d'erreur: lors de l'utilisation de la commande, vous pouvez d'abord supprimer -w, puis double-cliquer sur le fichier exe, voir le message d'erreur dans l'interface de commande dos et le modifier.

Pour une explication détaillée de l'empaquetage python, veuillez vous référer au blog suivant:

https://www.cnblogs.com/XJT2018/p/9865239.html

https://www.cnblogs.com/MrRead/p/8393352.html

https://www.cnblogs.com/botoo/p/9644546.html

4. Affichage des résultats d'exécution de l'interface utilisateur graphique

Je suppose que tu aimes

Origine blog.csdn.net/u013521274/article/details/86374948
conseillé
Classement