Python實用小工具之文件內(nèi)容替換
咪哥雜談

本篇閱讀時間約為 6 分鐘。
1
前言
上周用 Python 幫同學(xué)寫了一個文件以及文件內(nèi)容替換的小工具,原本是沒有界面的,純屬編碼,后來為了做成小工具,特意加上了界面。
今天上來給大家分享一下,有需要可以自取。
關(guān)于代碼部分,我會在這篇文章里將我遇到的難點(diǎn)寫出來,后續(xù)如果有同學(xué)遇到相同的問題,可以有個參考。
廢話不多說,我錄了一段視頻,感興趣的同學(xué)可以看下演示。
2
視頻演示
3
用到的技術(shù)
用到的庫有三種,分別是:
tkinter (畫界面自帶的Python庫)
os (Python自帶的系統(tǒng)庫)
chardet (識別文件編碼用的第三方庫)
4
遇到的難點(diǎn)
Python讀取文件內(nèi)容的時候,會經(jīng)常遇到編碼不一致導(dǎo)致內(nèi)容報錯,此處便是整個小程序最大的難點(diǎn)。
有沒有辦法能解決不同文件,編碼自動識別的方法?那就是上面提到的 chardet(編碼甄別)可以這么實現(xiàn):
# 讀該文件編碼格式with open(old_file_path, 'rb') as file:curr_encode = chardet.detect(file.read())['encoding']# 如果被替換的字符串在文件內(nèi)容中,先按行讀出來,在替換with open(old_file_path, 'r', encoding=curr_encode, errors='ignore') as f:for line in f.readlines():????????........
通過這種形式讀取到文件內(nèi)容,自動識別編碼。
所以在所有處理大數(shù)據(jù)文件的時候,有一種做法叫 "分而治之" 。
我們可以通過分塊的形式,逐行去"喂給" detector 進(jìn)行編碼識別處理。當(dāng) detector 識別到的數(shù)據(jù)達(dá)到一定程度時,detector.done會返回 True,此時就可以獲取該文件的編碼格式了。
如圖(具體可以去看源碼):

5
結(jié)語
關(guān)于這個小工具,原本我是想打成?exe 文件和 dmg 文件提供給大家的。
但那天試了一下才知道,pyinstaller 的庫是根據(jù)電腦系統(tǒng)進(jìn)行編譯的,比如你的系統(tǒng)是 windows ,它自動打包應(yīng)用出來的就是 exe,要是 mac os,打包出來的就是 unix 底層的執(zhí)行文件。
所以這里就不直接提供你們成型的工具了,如果你有需要,可以后臺回復(fù) 【替換】關(guān)鍵詞,獲取源碼,之后你們在自己去打包吧。
不會打包的,可以參考下之前寫的這篇文章。
好啦,本期視頻就到這里,如果你有什么問題或者想討論的,歡迎評論區(qū)留言探討!期待你的留言吶!
