Python小工具——文件编码格式转换器

介绍:

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

使用注意:

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

知识点:

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

界面展示:

代码:

from tkinter import *
from tkinter import filedialog,scrolledtext,ttk
import re

LIST_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))
    return
btn_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))
    return
btn_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()

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值