关于文件格式识别转换
学校上机实验的一道作业题(可能是我太菜完全不会写,写出来整理一下,内容仅为个人理解)
作业内容:编写程序,用户在命令提示行输入文件名和该文件的编码格式,读入文件,将其转存成UTF-8格式。如果用户没有指定输入文件的编码格式,则使用chardet模块“猜”出其编码格式,用于解码。使用argparse模块解析用户命令提示行输入。
- 编码格式
- chardet模块
- argparse模块
- 编码格式转换
- 具体代码
编码格式
文件是数据存储的一直形式,它有两种展现形态,一种是二进制形态一种是文本形态。这两种本质上都是二进制形态。
而文本文件就是利用某种单一编码组成的文件,也可以理解成储存着的字符串。其中这个单一编码就是编码格式,例如UTF-8格式,ASCII等等
chardet模块
使用chardet模块检测编码格式很简单,使用chardet. detect()方法就可以得到,例如:
>>>chardet.detect(b'hellow world')
{'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
>>> data = '我爱祖国'.encode('utf-8')
>>> chardet.detect(data)
{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
encoding代表编码格式,confidenc代表检测的概率,language不解释
argparse模块
argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广。
主要有以下三个方法:
ArgumentParser()生成一个argparse对象
ArgumentParser().add_argument( ) 增加参数
ArgumentParser().parse_args( ) 显示参数
import argparse
def main():parser = argparse.ArgumentParser(description='Change the encoding')#description是argparse对象的描述parser.add_argument('--name',default='link',help='name')parser.add_argument('--old',default='14',help='year')#default为参数默认值 --name为参数名 help为参数的说明args=parser.parse_args()#这一步是所有获取的参数print(args)print('hello {}'.format(args.name))
if __name__ == '__main__':main()
不输入参数直接使用‘python 文件名’结果如下:
可以使用‘python 文件名 -h’来显示description和help等信息
也可以使用‘python 文件名 参数’来改变参数(无图)
更多argparse的相关内容:argparse的更多内容
编码格式转换
首先是文件的各种打开方式:
f=open(“t.txt”) 文本形式,只读,
f=open(“t.txt”,“rt”) 文本形式,只读
f=open(“t.txt”,“w”) 文本形式,覆盖写模式
f=open(“t.txt”,“a+”) 文本形式,追加写模式+读
f=open(“t.txt”,“x”) 文本形式,创建写模式
f=open(“t.txt”,“b”) 二进制形式,只读
f=open(“t.txt”,“wb”) 二进制形式,覆盖写模式
编码格式的转换方法为:
以原编码形式打开文件,读取内容
以目标代码形式打开文件,写入之前读取的内容
(本菜鸡暂时能想到的方法)
具体代码
import chardet
import argparsedef main():parse = argparse.ArgumentParser(description='change the encoding')parse.add_argument('--file_name', default=r'C:\Users\16934\Desktop\测试.txt', help='file name')parse.add_argument('--encode', help='file encode')args = parse.parse_args()#如果原编码类型没有给出则判断编码类型with open(args.file_name, 'rb') as f:#只有以二进制形式打开,才能使用chardetif not args.encode:args.encode = chardet.detect(f.read())['encoding']print(args.encode)
#这里的为上面改变格式方法的代码with open(args.file_name, 'r',encoding=args.encode) as f:content=f.read()f=open(args.file_name, 'w',encoding='utf-8')f.write(content)f.close()with open(args.file_name, 'rb')as f:print(chardet.detect(f.read())['encoding'])if __name__ == '__main__':main()
原文件为数字的运行结果:
因为提前设置了文件名 所以不需要任何输入。这里结果仍然为ascii推测原因为detect检测问题。
原文件为汉子的运行结果
此时结果正常
(我吐了,第一篇博客写了这么久)
关于文件格式识别转换相关推荐
- python实现文件格式转换_python实现快速文件格式批量转换的方法
用python实现文件夹下的成批文件格式转换 我们对于文件转换的需求很大,甚至于对于图片的格式,JPG和PNG格式在肉眼看来都没什么差别,但是对于计算机而言,它有时候就只接受这些肉眼看起来差不多的格式 ...
- python 文件批量转换格式_python实现快速文件格式批量转换的方法
用python实现文件夹下的成批文件格式转换 我们对于文件转换的需求很大,甚至于对于图片的格式,JPG和PNG格式在肉眼看来都没什么差别,但是对于计算机而言,它有时候就只接受这些肉眼看起来差不多的格式 ...
- Cisdem PDF Converter OCR for Mac(PDF文字识别转换工具)
Cisdem PDF Converter OCR Mac特别版是Mac平台上一款功能非常强大的PDF文字识别转换工具,用户可以通过Cisdem PDF Converter OCR for Mac将任何 ...
- python图片转文字easyocr_Easy Screen OCR for Mac(文字识别转换工具)
原标题:Easy Screen OCR for Mac(文字识别转换工具) Easy Screen OCR for Mac(文字识别转换工具)带给大家!Easy Screen OCR文字识别转换工具可 ...
- Python xls文件和xlsx文件格式互相转换
Python xls文件和xlsx文件格式互相转换 1. xls文件另存为xlsx import win32com.client xls_path = 'D:\\1_Work_Task\\01_Int ...
- vpr文件转换flac_vpr文件格式怎么转换,划重点了
最近小编收到很多问题,其中一个就是下面小编为大家整理一下关于vpr文件格式怎么转换的步骤,希望这些方法能够帮助到大家. 工具/材料 电脑 操作方法 01 首先,以文本格式储存的数字,在更改单元格格式后 ...
- 真正好用的mac版免费OCR文字识别转换工具
Easy Screen OCR Mac版是Mac平台上的一款OCR文字识别软件效率工具.支持多种语言,可以直接获取屏幕上的文字进行识别,简单又好用.感兴趣的朋友快来下载使用吧. Easy Screen ...
- oracle 颜色中英文转换工具,Colors MiniLab(颜色识别转换工具)
Colors MiniLab 能够帮助用户对电脑屏幕中任意区域的颜色进行识别,并快速地转换为值方便用户查看,支持对16进制进行快速查看,也可以通过快捷键操作,非常的方便灵活,用户想要获取屏幕中的颜色时 ...
- python图片转文字easyocr_Easy Screen OCR——文字识别转换软件
Easy Screen OCR for Mac(文字识别转换工具)v1.4.0免费版带给大家!Easy Screen OCR文字识别转换工具可以帮助用户快速的获得图片中的文字内容.使用非常简单,只需拖 ...
最新文章
- mysql数据库查询缓存_MySQL查询缓存与数据库管理
- python装饰器 property_Python中@property装饰器的使用技巧性解析(代码示例)
- Linux中top命令使用
- 拥抱haXe之javascript 也玩mvc
- reactjs redux集中式状态管理最简入门案例
- ThinkPHP 3.2.3 视图模型的使用
- (计算机组成原理)第三章存储系统-第六节4:Cache的写策略(写回法和全写法,写分配法和非写分配法)
- Flutter CustomScrollView实现的一个经典滑动折叠头部图片的效果
- linux新系统配置网络,怎样配置新安装的Ubuntu版Linux系统的..._网络编辑_帮考网
- redis 能不能监听特定的key失效_Spring boot实现监听Redis key失效事件实现和其它方式...
- ttf字体文件裁剪,字体文件压缩,字体文件提取
- Android做一个WiFi信号测试,Android开发——WiFi信号检测
- python Beautifulsoup4爬取凡人修仙传仙界篇连载中文章并生成txt
- 简单又好用得高效工具分享
- 华为vlan间路由:利用路由器实现不同vlan间的通信
- UI设计师、平面设计师常用的网站大全,初学者必备,大家都在用!
- 再见铁饭碗!又一行业被颠覆!国内第一家无人银行,在上海正式开业!
- 使用runas命令让域用户可以以管理员权限运行程序
- 马克西尼的心流体验模型
- linux 壁纸自动更换,linux设置自动更换壁纸
热门文章
- windows上gn编译指引
- 深入分布式缓存:微博是如何应对日访问量百亿级的缓存架构设计
- Asp.Net 在线(登录)人数统计
- dede织梦模板TAG静态化-按编号数字分页
- 电信运营商工程项目管理
- 计算机网络——3A安全认证
- android抖音自动刷新,Android SwipeRefreshLayout仿抖音app静态刷新
- 【无人机】基于fmincon实现无人机二维路径规划附matlab代码
- 天龙单机服务器维护,天龙八部怀旧版如梦令单机版,天龙八部一键端无情网络版服务端...
- 被ddos攻击了怎么办,阿里云又太贵了