<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 1181字,需瀏覽 3分鐘

           ·

          2020-05-25 23:20

          咪哥雜談


          2a48ebb3039c66817761c1bea6f37bf0.webp

          本篇閱讀時間約為 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)容,自動識別編碼。


          但這樣有個壞處,就是遇到大文件的時候,一口氣會把文件全部加載到內(nèi)存中,有可能會造成電腦的卡頓。
          所以在所有處理大數(shù)據(jù)文件的時候,有一種做法叫 "分而治之" 。
          我們可以通過分塊的形式,逐行去"喂給" detector 進(jìn)行編碼識別處理。當(dāng) detector 識別到的數(shù)據(jù)達(dá)到一定程度時,detector.done會返回 True,此時就可以獲取該文件的編碼格式了。


          如圖(具體可以去看源碼):

          4a94f81dfe4ed310c8d12798ac2c6c81.webp


          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)鍵詞,獲取源碼,之后你們在自己去打包吧。


          不會打包的,可以參考下之前寫的這篇文章。

          exe文件?你也可以編寫!


          好啦,本期視頻就到這里,如果你有什么問題或者想討論的,歡迎評論區(qū)留言探討!期待你的留言吶!




          ▼往期精彩回顧▼大學(xué)時遇到的奇葩詐騙經(jīng)歷看完何同學(xué)的這期B站視頻,我做了個決定...




          瀏覽 57
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  三级特黄毛片 | 日本aaa在线观看 | 国产精品爽爽久久久久 | 欧美日韩一级黄片 | 一级黄色艳情A片 |