Python处理文件的方法(mimetypes和chardet)

 更新时间:2021年04月14日 10:13:59   作者:八戒无戒i  
这篇文章主要介绍了Python处理文件的方法(mimetypes和chardet),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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

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

示例.png

假如有这个一个配置文件,非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 read
   self._read(fp, filename)
 File "G:\Anaconda\lib\configparser.py", line 1014, in _read
   for 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 configparser

data = 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']
.bat

Process finished with exit code 0

到此这篇关于Python—处理文件(mimetypes和chardet)的文章就介绍到这了,更多相关Python—处理文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Django多数据库联用实现方法解析

    Django多数据库联用实现方法解析

    这篇文章主要介绍了Django多数据库联用实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Python pandera数据验证和清洗的库

    Python pandera数据验证和清洗的库

    为了确保数据的质量,Python Pandera 库应运而生。本文将深入介绍 Python Pandera,这是一个用于数据验证和清洗的库,并提供丰富的示例代码,帮助大家充分利用它来提高数据质量
    2024-01-01
  • python实现电子词典

    python实现电子词典

    这篇文章主要为大家详细介绍了python实现电子词典,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2014-01-01
  • 使用Python开发在线编辑器

    使用Python开发在线编辑器

    这篇文章主要为大家详细介绍了如何使用Python开发一个在线编辑器,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解一下
    2025-02-02
  • 2025最新版Python3.13.1安装使用指南(超详细)

    2025最新版Python3.13.1安装使用指南(超详细)

    Python编程语言自诞生以来,已经成为全球最受欢迎的编程语言之一,它简单易学易用,以标准库和功能强大且广泛外 挂的扩展库,为用户提供包罗万象、强大全面的功能,此次给大家介绍了2025年最新版Python 3.13.1安装使用指南全面更新,需要的朋友可以参考下
    2025-03-03
  • 将python文件打包成EXE应用程序的方法

    将python文件打包成EXE应用程序的方法

    相信大家都想把自己完成的项目打包成EXE应用文件,然后就可以放在桌面随时都能运行了,下面来分享利用pytinstaller这个第三方库来打包程序,感兴趣的朋友跟随小编一起看看吧
    2019-05-05
  • Python中逗号转为空格的三种方法

    Python中逗号转为空格的三种方法

    本文介绍了Python中将逗号转换为空格的三种方法,包含使用replace函数、使用split函数、使用正则表达式,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Python利用matplotlib实现饼图绘制

    Python利用matplotlib实现饼图绘制

    Pyplot作为Matplotlib的子库,提供了和MATLAB差不多的绘图API。因此Pyplot作为常用的绘图模块,能很方便让用户绘制2D图表。本文将为大家介绍如何利用Matplotlib绘制饼图,感兴趣的小伙伴可以了解一下
    2021-12-12
  • Python中的time模块与datetime模块用法总结

    Python中的time模块与datetime模块用法总结

    Python中内置的各项时间日期函数几乎都来自于time和datetime这两个模块,下面整理了Python中的time模块与datetime模块用法总结,需要的朋友可以参考下
    2016-06-06
  • Python处理文本文件中控制字符的方法

    Python处理文本文件中控制字符的方法

    最近在使用Python的时候遇到过文档中出现控制字符报错的问题。想着总结一下,方便以后需要或这同样遇到问题的朋友,下面这篇文章主要介绍了Python处理文本文件中控制字符的解决方法,需要的朋友可以参考借鉴。
    2017-02-02

最新评论