Python處理文件的方法(mimetypes和chardet)
處理文件時minetype和chardet是很好用的兩個模塊函數(shù):
###chardet:
主要處理文件文件編碼問題
假如有這個一個配置文件,非ascii或者utf8編碼:
__coding__ = 'UTF-8' __author__ = 'bingo' import chardet import configparser parse = configparser.ConfigParser() parse.read("config.ini") print(parse.sections())
運行結(jié)果:
G:\Anaconda\python.exe "C:/Users/bingo/Desktop/The crawler/學(xué)習(xí)/demo.py"
Traceback (most recent call last):
File "C:/Users/bingo/Desktop/The crawler/學(xué)習(xí)/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/學(xué)習(xí)/demo.py" {'encoding': 'UTF-16', 'confidence': 1.0, 'language': ''} ['config'] Process finished with exit code 0
###mimetypes:
主要處理文件文件類型問題
該模塊提供在文件名或URL與與文件擴展名關(guān)聯(lián)的MIME類型之間進行轉(zhuǎn)換的功能,主要有以下兩個函數(shù):
mimetypes.guess_type(url, strict=True):
返回一個元組(type, encoding), strict默認參數(shù),指定已知MIME類型的列表是否僅限于在IANA注冊的官方類型,type為MIME類型,encoding可能為None
mimetypes.guess_all_extensions(type, strict=True):
返回一個列表,根據(jù)傳入的type(MIME類型),返回提供所有可能的文件擴展名的字符串列表,包括前導(dǎo)點('.'),strict默認參數(shù),指定已知MIME類型的列表是否僅限于在IANA注冊的官方類型
import mimetypes # 獲取文件MIME類型 type, encoding = mimetypes.guess_type("demo.py") print(type) # 根據(jù)MIME類型獲取所有可能的文件后綴名 c = mimetypes.guess_all_extensions(type) print(c) >>>運行結(jié)果如下: G:\Anaconda\python.exe "C:/Users/bingo/Desktop/The crawler/學(xué)習(xí)/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
到此這篇關(guān)于Python—處理文件(mimetypes和chardet)的文章就介紹到這了,更多相關(guān)Python—處理文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python創(chuàng)建Excel表和讀取Excel表的基本操作
這篇文章主要介紹了Python創(chuàng)建Excel表和讀取Excel表的基本操作,文中通過代碼示例和圖文結(jié)合的方式講解的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07Python實現(xiàn)滑動平均(Moving Average)的例子
今天小編就為大家分享一篇Python實現(xiàn)滑動平均(Moving Average)的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08Python與xlwings黃金組合處理Excel各種數(shù)據(jù)和自動化任務(wù)
這篇文章主要為大家介紹了Python與xlwings黃金組合處理Excel各種數(shù)據(jù)和自動化任務(wù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>2023-12-12