摘要:存儲(chǔ)元是存儲(chǔ)器中最小存儲(chǔ)單元,它的作用是用來(lái)存放一位二進(jìn)制代碼或。所以在文件寫(xiě)入后這種和的組合就固定下來(lái),如果這種組合是用編碼寫(xiě)入的,那么當(dāng)你寫(xiě)入一段漢字后,這種組合就表現(xiàn)為每個(gè)存儲(chǔ)元代表一個(gè)漢字。
很高興在我寫(xiě)的文章下看到有人回復(fù),然后我在測(cè)試回復(fù)中的代碼時(shí)居然發(fā)現(xiàn)個(gè)有趣的現(xiàn)象,并且得出下面的結(jié)論,請(qǐng)大家討論
先說(shuō)結(jié)論r+模式(讀寫(xiě))下,如果文件內(nèi)容已經(jīng)存在了中文,當(dāng)你試圖插入新內(nèi)容時(shí),必須使新內(nèi)容的總體字節(jié)數(shù)是當(dāng)前編碼下單個(gè)漢字占位字節(jié)的整數(shù)倍。否則讀取時(shí)會(huì)報(bào)錯(cuò)。
補(bǔ)充:如果你把指針調(diào)到末尾則沒(méi)這個(gè)問(wèn)題,也就是說(shuō)可以在后面寫(xiě),但是在前面插入內(nèi)容的話就會(huì)有上面的問(wèn)題。
為了搞清楚最底層的工作原理,我專門(mén)看了幾篇相關(guān)文章,得出如下結(jié)論,我覺(jué)得可以了,不用再深究了,再往深了說(shuō)就有點(diǎn)兒舍本逐末了。
首先,計(jì)算機(jī)存儲(chǔ)的都是二進(jìn)制數(shù)字,也就是說(shuō)是每8位一組的0和1的各種組合,當(dāng)寫(xiě)入磁盤(pán)后,在物理層面這種0和1的組合就固定下來(lái),再往底層說(shuō)就是磁盤(pán)表面會(huì)出現(xiàn)凹凸不平的代表0和1的存儲(chǔ)元。(存儲(chǔ)元是存儲(chǔ)器中最小存儲(chǔ)單元,它的作用是用來(lái)存放一位二進(jìn)制代碼0或1。)
所以在文件寫(xiě)入后這種0和1的組合就固定下來(lái),如果這種組合是用UTF-8編碼寫(xiě)入的,那么當(dāng)你寫(xiě)入一段漢字后,這種組合就表現(xiàn)為每24個(gè)存儲(chǔ)元代表一個(gè)漢字。
此時(shí)如果你想修改這段漢字的任何一個(gè)字,你必須修改相應(yīng)的24個(gè)存儲(chǔ)元,如果你只修改8個(gè)存儲(chǔ)元(一個(gè)字節(jié))或者16個(gè)存儲(chǔ)元(兩個(gè)字節(jié)),那么剩下的存儲(chǔ)元無(wú)法被當(dāng)前編碼識(shí)別,也許碰巧會(huì)有某種編碼能夠識(shí)別這剩下的16個(gè)或者8個(gè)存儲(chǔ)元代表的組合,但這已經(jīng)沒(méi)有意義。我還不知道有什么辦法能讓計(jì)算機(jī)在指定位置使用一種編碼,然后在另一個(gè)位置使用另外一種編碼。也許有……暫時(shí)還沒(méi)學(xué)到
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/42574.html
摘要:如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。運(yùn)行結(jié)果以上是讀取文件的方法。為了輸出中文,我們還需要指定一個(gè)參數(shù)為,另外規(guī)定文件輸出的編碼。 上一篇文章:Python3網(wǎng)絡(luò)爬蟲(chóng)實(shí)戰(zhàn)---30、解析庫(kù)的使用:PyQuery下一篇文章:Python3網(wǎng)絡(luò)爬蟲(chóng)實(shí)戰(zhàn)---32、數(shù)據(jù)存儲(chǔ):關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ):MySQL 我們用解析器解析出數(shù)據(jù)之后,接下來(lái)的一步就是對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)了,保存的形式可以...
摘要:可以對(duì)文件進(jìn)行查看創(chuàng)建等功能,可以對(duì)文件內(nèi)容進(jìn)行添加修改刪除,且所使用到的函數(shù)在為,在同時(shí)支持和,但是在系列移除了函數(shù)。在及以后,又支持同時(shí)對(duì)多個(gè)文件的上下文進(jìn)行管理,即原文鏈接 Python可以對(duì)文件進(jìn)行查看、創(chuàng)建等功能,可以對(duì)文件內(nèi)容進(jìn)行添加、修改、刪除,且所使用到的函數(shù)在Python3.5.x為open,在Python2.7.x同時(shí)支持file和open,但是在3.5.x系列移除...
摘要:利用我們集成的目前世界上規(guī)模最大的人工分詞和詞性標(biāo)注中文語(yǔ)料庫(kù)約含萬(wàn)字訓(xùn)練而成,模型標(biāo)注能力強(qiáng)大。據(jù)說(shuō)是最好的中文分詞組件,支持等多種語(yǔ)言。 總是看到別人用Python搞各種統(tǒng)計(jì),前端菜鳥(niǎo)的我也來(lái)嘗試了一把。有各種語(yǔ)義分析庫(kù)在,一切好像并不是很復(fù)雜。不過(guò)Python剛開(kāi)始看,估計(jì)代碼有點(diǎn)丑。 一、兩種中文分詞開(kāi)發(fā)包 thulac (http://thulac.thunlp.org/)...
摘要:鍵盤(pán)輸入提供了內(nèi)置函數(shù)從標(biāo)準(zhǔn)輸入讀入一行文本,默認(rèn)的標(biāo)準(zhǔn)輸入是鍵盤(pán)。可以接收一個(gè)表達(dá)式作為輸入,并將運(yùn)算結(jié)果返回。將返回該文件中包含的所有行。將寫(xiě)入到文件中然后返回寫(xiě)入的字符數(shù)。當(dāng)處理一個(gè)文件對(duì)象時(shí)使用關(guān)鍵字是非常好的方式。 1. 鍵盤(pán)輸入 Python提供了 input() 內(nèi)置函數(shù)從標(biāo)準(zhǔn)輸入讀入一行文本,默認(rèn)的標(biāo)準(zhǔn)輸入是鍵盤(pán)。input 可以接收一個(gè) Python 表達(dá)式作為輸入,...
摘要:它則是以行為單位返回字符串,也就是每次讀一行,依次循環(huán),如果不限定,直到最后一個(gè)返回的是空字符串,意味著到文件末尾了。 讀文件 在某個(gè)文件夾下面建立了一個(gè)文件,名曰:130.txt,并且在里面輸入了如下內(nèi)容: learn python http://qiwsir.github.io qiwsir@gmail.com f = open(123.txt) #打開(kāi)已經(jīng)存在的文件,此文件在當(dāng)前...
閱讀 3190·2021-11-10 11:35
閱讀 1295·2019-08-30 13:20
閱讀 1117·2019-08-29 16:18
閱讀 2131·2019-08-26 13:54
閱讀 2155·2019-08-26 13:50
閱讀 955·2019-08-26 13:39
閱讀 2473·2019-08-26 12:08
閱讀 1951·2019-08-26 10:37