学校上机实验的一道作业题(可能是我太菜完全不会写,写出来整理一下,内容仅为个人理解)
作业内容:编写程序,用户在命令提示行输入文件名和该文件的编码格式,读入文件,将其转存成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检测问题。
原文件为汉子的运行结果

此时结果正常

(我吐了,第一篇博客写了这么久)

关于文件格式识别转换相关推荐

  1. python实现文件格式转换_python实现快速文件格式批量转换的方法

    用python实现文件夹下的成批文件格式转换 我们对于文件转换的需求很大,甚至于对于图片的格式,JPG和PNG格式在肉眼看来都没什么差别,但是对于计算机而言,它有时候就只接受这些肉眼看起来差不多的格式 ...

  2. python 文件批量转换格式_python实现快速文件格式批量转换的方法

    用python实现文件夹下的成批文件格式转换 我们对于文件转换的需求很大,甚至于对于图片的格式,JPG和PNG格式在肉眼看来都没什么差别,但是对于计算机而言,它有时候就只接受这些肉眼看起来差不多的格式 ...

  3. Cisdem PDF Converter OCR for Mac(PDF文字识别转换工具)

    Cisdem PDF Converter OCR Mac特别版是Mac平台上一款功能非常强大的PDF文字识别转换工具,用户可以通过Cisdem PDF Converter OCR for Mac将任何 ...

  4. python图片转文字easyocr_Easy Screen OCR for Mac(文字识别转换工具)

    原标题:Easy Screen OCR for Mac(文字识别转换工具) Easy Screen OCR for Mac(文字识别转换工具)带给大家!Easy Screen OCR文字识别转换工具可 ...

  5. Python xls文件和xlsx文件格式互相转换

    Python xls文件和xlsx文件格式互相转换 1. xls文件另存为xlsx import win32com.client xls_path = 'D:\\1_Work_Task\\01_Int ...

  6. vpr文件转换flac_vpr文件格式怎么转换,划重点了

    最近小编收到很多问题,其中一个就是下面小编为大家整理一下关于vpr文件格式怎么转换的步骤,希望这些方法能够帮助到大家. 工具/材料 电脑 操作方法 01 首先,以文本格式储存的数字,在更改单元格格式后 ...

  7. 真正好用的mac版免费OCR文字识别转换工具

    Easy Screen OCR Mac版是Mac平台上的一款OCR文字识别软件效率工具.支持多种语言,可以直接获取屏幕上的文字进行识别,简单又好用.感兴趣的朋友快来下载使用吧. Easy Screen ...

  8. oracle 颜色中英文转换工具,Colors MiniLab(颜色识别转换工具)

    Colors MiniLab 能够帮助用户对电脑屏幕中任意区域的颜色进行识别,并快速地转换为值方便用户查看,支持对16进制进行快速查看,也可以通过快捷键操作,非常的方便灵活,用户想要获取屏幕中的颜色时 ...

  9. python图片转文字easyocr_Easy Screen OCR——文字识别转换软件

    Easy Screen OCR for Mac(文字识别转换工具)v1.4.0免费版带给大家!Easy Screen OCR文字识别转换工具可以帮助用户快速的获得图片中的文字内容.使用非常简单,只需拖 ...

最新文章

  1. mysql数据库查询缓存_MySQL查询缓存与数据库管理
  2. python装饰器 property_Python中@property装饰器的使用技巧性解析(代码示例)
  3. Linux中top命令使用
  4. 拥抱haXe之javascript 也玩mvc
  5. reactjs redux集中式状态管理最简入门案例
  6. ThinkPHP 3.2.3 视图模型的使用
  7. (计算机组成原理)第三章存储系统-第六节4:Cache的写策略(写回法和全写法,写分配法和非写分配法)
  8. Flutter CustomScrollView实现的一个经典滑动折叠头部图片的效果
  9. linux新系统配置网络,怎样配置新安装的Ubuntu版Linux系统的..._网络编辑_帮考网
  10. redis 能不能监听特定的key失效_Spring boot实现监听Redis key失效事件实现和其它方式...
  11. ttf字体文件裁剪,字体文件压缩,字体文件提取
  12. Android做一个WiFi信号测试,Android开发——WiFi信号检测
  13. python Beautifulsoup4爬取凡人修仙传仙界篇连载中文章并生成txt
  14. 简单又好用得高效工具分享
  15. 华为vlan间路由:利用路由器实现不同vlan间的通信
  16. UI设计师、平面设计师常用的网站大全,初学者必备,大家都在用!
  17. 再见铁饭碗!又一行业被颠覆!国内第一家无人银行,在上海正式开业!
  18. 使用runas命令让域用户可以以管理员权限运行程序
  19. 马克西尼的心流体验模型
  20. linux 壁纸自动更换,linux设置自动更换壁纸

热门文章

  1. windows上gn编译指引
  2. 深入分布式缓存:微博是如何应对日访问量百亿级的缓存架构设计
  3. Asp.Net 在线(登录)人数统计
  4. dede织梦模板TAG静态化-按编号数字分页
  5. 电信运营商工程项目管理
  6. 计算机网络——3A安全认证
  7. android抖音自动刷新,Android SwipeRefreshLayout仿抖音app静态刷新
  8. 【无人机】基于fmincon实现无人机二维路径规划附matlab代码
  9. 天龙单机服务器维护,天龙八部怀旧版如梦令单机版,天龙八部一键端无情网络版服务端...
  10. 被ddos攻击了怎么办,阿里云又太贵了