处理文件时minetype和chardet是很好用的两个模块函数:

###chardet:
主要处理文件文件编码问题

假如有这个一个配置文件,非ascii或者utf8编码:

__coding__ = 'UTF-8'
__author__ = 'bingo'import chardet
import configparser
parse = configparser.ConfigParser()
parse.read("config.ini")
print(parse.sections())

运行结果:

G:\Anaconda\python.exe "C:/Users/bingo/Desktop/The crawler/学习/demo.py"
Traceback (most recent call last):File "C:/Users/bingo/Desktop/The crawler/学习/demo.py", line 29, in <module>parse.read("config.ini")File "G:\Anaconda\lib\configparser.py", line 696, in readself._read(fp, filename)File "G:\Anaconda\lib\configparser.py", line 1014, in _readfor lineno, line in enumerate(fp, start=1):
UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: illegal >multibyte sequence

但是改成下面, 用chardet先获取文件编码格式,就可以完美解决上面报错问题:

import chardet
import configparserdata = open("config.ini", "rb").read()
a = chardet.detect(data)
print(a)parse = configparser.ConfigParser()
parse.read("config.ini", encoding=a["encoding"])
print(parse.sections())>>>>>>>>>>>>>>>再运行:
G:\Anaconda\python.exe "C:/Users/bingo/Desktop/The crawler/学习/demo.py"
{'encoding': 'UTF-16', 'confidence': 1.0, 'language': ''}
['config']Process finished with exit code 0

###mimetypes:
主要处理文件文件类型问题
该模块提供在文件名或URL与与文件扩展名关联的MIME类型之间进行转换的功能,主要有以下两个函数:
mimetypes.guess_type(url, strict=True)
返回一个元组(type, encoding), strict默认参数,指定已知MIME类型的列表是否仅限于在IANA注册的官方类型,type为MIME类型,encoding可能为None
mimetypes.guess_all_extensions(type, strict=True)
返回一个列表,根据传入的type(MIME类型),返回提供所有可能的文件扩展名的字符串列表,包括前导点(’.’),strict默认参数,指定已知MIME类型的列表是否仅限于在IANA注册的官方类型

import mimetypes# 获取文件MIME类型
type, encoding = mimetypes.guess_type("demo.py")
print(type)
# 根据MIME类型获取所有可能的文件后缀名
c = mimetypes.guess_all_extensions(type)
print(c)>>>运行结果如下:
G:\Anaconda\python.exe "C:/Users/bingo/Desktop/The crawler/学习/demo.py"
text/plain
['.bat', '.c', '.h', '.ksh', '.pl', '.txt', '.asm', '.cc', '.cod', '.cpp', '.cs', '.csh', '.cshader', >'.csproj', '.cxx', '.def', '.dsh', '.dshader', '.dsp', '.dsw', '.efu', '.filters', '.fx', '.gitattributes', >'.gitignore', '.gitmodules', '.gsh', '.gshader', '.hh', '.hlsl', '.hlsli', '.hpp', '.hsh', '.hshader', >'.hxx', '.i', '.idl', '.inc', '.inl', '.ipp', '.js', '.jsproj', '.jsx', '.jsxbin', '.jsxinc', '.lst', '.mak', >'.map', '.mdp', '.mk', '.odh', '.odl', '.pkgdef', '.pkgundef', '.psh', '.pshader', '.py', '.pyw', >'.rc', '.rc2', '.rct', '.res', '.rgs', '.s', '.sln', '.sol', '.sor', '.srf', '.tlh', '.tli', '.ts', '.tsx', '.tt', >'.user', '.vb', '.vbproj', '.vcp', '.vcw', '.vsh', '.vshader']
.batProcess finished with exit code 0

Python—处理文件(mimetypes和chardet)相关推荐

  1. python获取文件编码格式除了chardet还有别的方式吗_使用python的chardet库获得文件编码并修改编码...

    首先需要安装chardet库,有很多方式,我才用的是比较笨的方式:sudo pip install chardet #!/usr/bin/env python # coding: UTF-8 impo ...

  2. Python读取文件编码及内容

    Python读取文件编码及内容 最近做一个项目,需要读取文件内容,但是文件的编码方式有可能都不一样.有的使用GBK,有的使用UTF8.所以在不正确读取的时候会出现如下错误: UnicodeDecode ...

  3. python打开一个不存在的文件时-python判断文件是否存在,不存在就创建一个的实例...

    python判断文件是否存在,不存在就创建一个的实例 如下所示: try: f =open("D:/1.txt",'r') f.close() except IOError: f ...

  4. Python实现文件上传和下载

    Python实现文件上传和下载 用Python开启web服务,在局域网内实现文件上传和下载功能 #!/usr/bin/env python3"""Simple HTTP ...

  5. Python的文件处理

    引子 1.问题:给你一个文件 "兼职白领学生空姐模特护士联系方式.txt" ,如何查看内容? 答: 安装文本编辑器软件 选中右键,利用文本编辑器软件打开 查看 or 写入 保存,关 ...

  6. Python修改文件编码格式

    Python修改文件编码格式 #修改文件编码格式 import chardet #查看当前文件编码格式 filename_in = '2017.2-2022.9.csv' with open(file ...

  7. 用python下载文件的若干种方法汇总

    压缩文件可以直接放到下载器里面下载的 you-get 连接 下载任意文件 重点 用python下载文件的若干种方法汇总 写文章 用python下载文件的若干种方法汇总 zhangqibot发表于Met ...

  8. 【python】一个目录里面多个python程序文件,统计一下里面有多少行代码。即分别列出:代码、空行、注释的行数。

    一个目录里面多个python程序文件,统计一下里面有多少行代码.即分别列出:代码.空行.注释的行数. 题目 代码 结果 题目 一个目录里面多个python程序文件,统计一下里面有多少行代码.即分别列出 ...

  9. python 的文件读写方法:read readline readlines wirte   writelines

    read()方法读入整个文件,把整个文件以字符串形式返回. readline()  方法每次只读一行,每运行一次只读一行.如果要读整个文件,需要结合循环判断文件结束. python判断文件末尾的标志是 ...

最新文章

  1. Win10下VisualStudio2019安装及测试
  2. python在通信中的应用_基于Redis的进程间通信——在C++里使用python的深度学习模型...
  3. 版本控制工具 svn 一
  4. Redis基本使用及百亿数据量中的使用技巧分享
  5. 2018.09.15 vijos1053Easy sssp(最短路)
  6. 查看java线程是否退出_[原创]IDA调试阻止java线程异常退出
  7. (41)FPGA状态机一段式
  8. sort numbers with three stacks
  9. 连接主机Java网络编程(一)- 一个简单的服务端/客户端应用程序
  10. (转)走进Smart Beta的世界
  11. mac系统的UTF-8 BOM编码
  12. 电影图标-黑客帝国(The Matrix)
  13. lambda演算感想之规则
  14. DxO FilmPack破解版|DxO FilmPack Elite 5.5.23破解版下载(附破解补丁)
  15. 芋头哥:从码农到农民,靠微博3个月卖出20万斤
  16. python笔记三之面向对象(继承,封装,多态)
  17. 使用EXCEL进行计数
  18. Python自我成长笔记(一)
  19. R语言的graphics功能(画图)
  20. python格式规范的要求_Python书写规范

热门文章

  1. 读了一本还算不错的小说
  2. 基于Python分析金庸小说里的主角,原来他才是真正的主角!
  3. java练习助手_Java开发的得力助手---Guava
  4. 使用Kubespray部署k8s生产集群
  5. 小程序流量主赚广告费,选择抖音快手微信QQ哪个平台好?教你理清思路
  6. 关于公车上让座的问题
  7. 包含clob字段的数据入库sql怎么写
  8. 每日一问-ChapGPT-20221229
  9. Beta阶段团队项目开发篇章1
  10. Android Studio 3