成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python之文件讀寫補充——R+模式下修改中文內(nèi)容

sunsmell / 2895人閱讀

摘要:存儲元是存儲器中最小存儲單元,它的作用是用來存放一位二進(jìn)制代碼或。所以在文件寫入后這種和的組合就固定下來,如果這種組合是用編碼寫入的,那么當(dāng)你寫入一段漢字后,這種組合就表現(xiàn)為每個存儲元代表一個漢字。

很高興在我寫的文章下看到有人回復(fù),然后我在測試回復(fù)中的代碼時居然發(fā)現(xiàn)個有趣的現(xiàn)象,并且得出下面的結(jié)論,請大家討論

先說結(jié)論

r+模式(讀寫)下,如果文件內(nèi)容已經(jīng)存在了中文,當(dāng)你試圖插入新內(nèi)容時,必須使新內(nèi)容的總體字節(jié)數(shù)是當(dāng)前編碼下單個漢字占位字節(jié)的整數(shù)倍。否則讀取時會報錯。
補充:如果你把指針調(diào)到末尾則沒這個問題,也就是說可以在后面寫,但是在前面插入內(nèi)容的話就會有上面的問題。

底層原理說明:

為了搞清楚最底層的工作原理,我專門看了幾篇相關(guān)文章,得出如下結(jié)論,我覺得可以了,不用再深究了,再往深了說就有點兒舍本逐末了。
首先,計算機(jī)存儲的都是二進(jìn)制數(shù)字,也就是說是每8位一組的0和1的各種組合,當(dāng)寫入磁盤后,在物理層面這種0和1的組合就固定下來,再往底層說就是磁盤表面會出現(xiàn)凹凸不平的代表0和1的存儲元。(存儲元是存儲器中最小存儲單元,它的作用是用來存放一位二進(jìn)制代碼0或1。)
所以在文件寫入后這種0和1的組合就固定下來,如果這種組合是用UTF-8編碼寫入的,那么當(dāng)你寫入一段漢字后,這種組合就表現(xiàn)為每24個存儲元代表一個漢字。
此時如果你想修改這段漢字的任何一個字,你必須修改相應(yīng)的24個存儲元,如果你只修改8個存儲元(一個字節(jié))或者16個存儲元(兩個字節(jié)),那么剩下的存儲元無法被當(dāng)前編碼識別,也許碰巧會有某種編碼能夠識別這剩下的16個或者8個存儲元代表的組合,但這已經(jīng)沒有意義。我還不知道有什么辦法能讓計算機(jī)在指定位置使用一種編碼,然后在另一個位置使用另外一種編碼。也許有……暫時還沒學(xué)到

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42574.html

相關(guān)文章

  • Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---31、數(shù)據(jù)存儲:文件存儲

    摘要:如果該文件已存在,文件指針將會放在文件的結(jié)尾。運行結(jié)果以上是讀取文件的方法。為了輸出中文,我們還需要指定一個參數(shù)為,另外規(guī)定文件輸出的編碼。 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---30、解析庫的使用:PyQuery下一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---32、數(shù)據(jù)存儲:關(guān)系型數(shù)據(jù)庫存儲:MySQL 我們用解析器解析出數(shù)據(jù)之后,接下來的一步就是對數(shù)據(jù)進(jìn)行存儲了,保存的形式可以...

    dreamans 評論0 收藏0
  • Python全棧路系列文件操作

    摘要:可以對文件進(jìn)行查看創(chuàng)建等功能,可以對文件內(nèi)容進(jìn)行添加修改刪除,且所使用到的函數(shù)在為,在同時支持和,但是在系列移除了函數(shù)。在及以后,又支持同時對多個文件的上下文進(jìn)行管理,即原文鏈接 Python可以對文件進(jìn)行查看、創(chuàng)建等功能,可以對文件內(nèi)容進(jìn)行添加、修改、刪除,且所使用到的函數(shù)在Python3.5.x為open,在Python2.7.x同時支持file和open,但是在3.5.x系列移除...

    Drummor 評論0 收藏0
  • python 實現(xiàn)中文分詞統(tǒng)計

    摘要:利用我們集成的目前世界上規(guī)模最大的人工分詞和詞性標(biāo)注中文語料庫約含萬字訓(xùn)練而成,模型標(biāo)注能力強(qiáng)大。據(jù)說是最好的中文分詞組件,支持等多種語言。 總是看到別人用Python搞各種統(tǒng)計,前端菜鳥的我也來嘗試了一把。有各種語義分析庫在,一切好像并不是很復(fù)雜。不過Python剛開始看,估計代碼有點丑。 一、兩種中文分詞開發(fā)包 thulac (http://thulac.thunlp.org/)...

    Honwhy 評論0 收藏0
  • Python 3 學(xué)習(xí)筆記——鍵盤輸入和讀寫文件

    摘要:鍵盤輸入提供了內(nèi)置函數(shù)從標(biāo)準(zhǔn)輸入讀入一行文本,默認(rèn)的標(biāo)準(zhǔn)輸入是鍵盤??梢越邮找粋€表達(dá)式作為輸入,并將運算結(jié)果返回。將返回該文件中包含的所有行。將寫入到文件中然后返回寫入的字符數(shù)。當(dāng)處理一個文件對象時使用關(guān)鍵字是非常好的方式。 1. 鍵盤輸入 Python提供了 input() 內(nèi)置函數(shù)從標(biāo)準(zhǔn)輸入讀入一行文本,默認(rèn)的標(biāo)準(zhǔn)輸入是鍵盤。input 可以接收一個 Python 表達(dá)式作為輸入,...

    xavier 評論0 收藏0
  • Python基礎(chǔ)(六)文件

    摘要:它則是以行為單位返回字符串,也就是每次讀一行,依次循環(huán),如果不限定,直到最后一個返回的是空字符串,意味著到文件末尾了。 讀文件 在某個文件夾下面建立了一個文件,名曰:130.txt,并且在里面輸入了如下內(nèi)容: learn python http://qiwsir.github.io [email protected] f = open(123.txt) #打開已經(jīng)存在的文件,此文件在當(dāng)前...

    wuyangnju 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<