博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python小工具——文件编码格式转换器
阅读量:2592 次
发布时间:2019-05-11

本文共 2871 字,大约阅读时间需要 9 分钟。

介绍:

在编程中,涉及到文件,会有不同的编码格式。这个小工具主要是以各种编码打开相关文件,编辑后,还可以各种编码格式保存。

使用注意:

在要保存二进制文件的时候,相邻的两个二位16禁止数需要用空格隔开。

知识点:

tkinter界面涉及(包含按钮-button、下拉列表-ttk.Combobox、滑动文本框-scrolledtext.ScrolledText),文件读写(open、read、write)

界面展示:

代码:

from tkinter import *from tkinter import filedialog,scrolledtext,ttkimport reLIST_CODER=('gbk','utf-8','ASCII','ANSI','二进制')win_main = Tk()win_main["background"] = "gray"win_main.geometry('1000x600')win_main.resizable(False,False)win_main.title("图片摘取文字")value_cbox_Open=StringVar()cbox_Open=ttk.Combobox(win_main,textvariable=value_cbox_Open,values=LIST_CODER)cbox_Open.current(0)cbox_Open.place(x=0,y=0,width=100,height=25)def cmd_btn_Open():    fileName=filedialog.askopenfilename(title='打开文件')    try:        if value_cbox_Open.get() == '二进制':            file_open=open(fileName,'rb')        else:            file_open = open(fileName, 'r',encoding=value_cbox_Open.get())        str_read=file_open.read()        file_open.close()        stxt_Show.delete(0.0,END)        if value_cbox_Open.get() == '二进制':            print(type(str_read))            for i in range(len(str_read)):                str_temp = '{:0>2x}'.format(str_read[i])                stxt_Show.insert(END, str_temp)                if (i+1)%45==0 and i>0:                    stxt_Show.insert(END,'\n')                else:                    stxt_Show.insert(END, ' ')        else:            stxt_Show.insert(END,str_read)    except BaseException as e:        stxt_Show.delete(0.0, END)        stxt_Show.insert(END, '文件打开错误:'+str(e))    returnbtn_Open=Button(win_main,text='打开文件',command=cmd_btn_Open)btn_Open.place(x=100,y=0,width=100,height=25)value_cbox_Save=StringVar()cbox_Save=ttk.Combobox(win_main,textvariable=value_cbox_Save,values=LIST_CODER)cbox_Save.current(0)cbox_Save.place(x=200,y=0,width=100,height=25)def cmd_btn_Save():    a=btn_Open.cget('font')    print(a,type(a))    fileName=filedialog.asksaveasfilename(title='保存文件')    try:        if value_cbox_Open.get() == '二进制':            file_open=open(fileName,'wb')        else:            file_open = open(fileName, 'w',encoding=value_cbox_Open.get())        str_write=stxt_Show.get(0.0,END)        str_write=re.split('[^0-9^a-f^A-F]',str_write)        if value_cbox_Open.get() == '二进制':            list_int_write = []            for i in range(len(str_write)):                if str_write[i]!='':                    list_int_write.append(int(str_write[i],16))            file_open.write(bytes(list_int_write))        else:            file_open.write(str_write)        file_open.close()    except BaseException as e:        stxt_Show.delete(0.0, END)        stxt_Show.insert(END, '文件保存错误:'+str(e))    returnbtn_Save=Button(win_main,text='保存文件',command=cmd_btn_Save)btn_Save.place(x=300,y=0,width=100,height=25)stxt_Show=scrolledtext.ScrolledText(win_main)stxt_Show.place(x=0,y=25,width=1000,height=575)win_main.mainloop()

 

转载地址:http://mszfd.baihongyu.com/

你可能感兴趣的文章
java3d立方体_3d立方体贴图
查看>>
java ajax教程_(转)JAVA AJAX教程第三章—AJAX详细讲解
查看>>
java operators_A guide to Java Operators
查看>>
java socket调试_JAVA实现SOCKET多客户端通信的案例
查看>>
java 使用或覆盖了已过时的api_JAVA使用或覆盖了已过时的 API
查看>>
java 图片旋转保存_Java 对图片90度旋转
查看>>
用java实现文学研究助手_数据结构文学研究助手 C语言代码实现(带源码+解析)...
查看>>
java gc的几种方式_GC 的三种基本实现方式
查看>>
wget linux java 32_通过wget在Linux上下载Java JDK会显示在许可证页面上
查看>>
babylonjs 设置面板位置_babylonjs 空间坐标转为屏幕坐标
查看>>
oracle里面如何查询sqlid,CSS_oracle中如何查看sql, --查询表状态:  select uo.O - phpStudy...
查看>>
oracle 查询中用case,oracle case when 在查询时候的用法。
查看>>
oracle正在运行的程序包,ORACLE PL/SQL编程详解之程序包的创建与应用
查看>>
php局部页面滚动,在访问另一页面后保留浏览器滚动位置 - php
查看>>
jmeter运行linux命令行,Jmeter在linux上运行(命令行运行Jmeter)
查看>>
linux服务器怎么添加站点,如何增加站点或虚拟主机及文件说明
查看>>
linux系统输入指令,Linux系统基础 - 基本操作命令
查看>>
linux设备管理命令,Linux命令(设备管理).doc
查看>>
linux 中文utf-8转gbk编码,Linux平台下 GBK编码转UTF-8编码
查看>>
linux安装软件在boot,在Linux系统上安装Spring boot应用的教程详解
查看>>