乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      開發(fā)技術(shù)--淺談文件操作與字符編碼

       印度阿三17 2019-07-24

      開發(fā)|淺談文件操作與字符編碼

      聽說Python的文件操作很容易在某一些電腦上出問題,然而罪魁禍?zhǔn)拙褪亲址幋a。讓我們來了解一些底層的編碼方式。

      前言

      目前所有的文章思想格式都是:知識(shí) 情感。
      知識(shí):對(duì)于所有的知識(shí)點(diǎn)的描述。力求不含任何的自我感情色彩。
      情感:用我自己的方式,解讀知識(shí)點(diǎn)。力求通俗易懂,完美透析知識(shí)。

      正文

      本文主要分為兩大部分,一部分是如何使用Python進(jìn)行文件操作,另一部分是聊一下字符編碼的那些事。(比較繞,盡量用最最最通俗的話表述~~)

      文件操作

      1.文件操作方式
      open()
      close()
      直接看源碼吧~~

      def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):
          """
          Open file and return a stream.  Raise OSError upon failure.
      
          ========= ===============================================================
          Character Meaning
          --------- ---------------------------------------------------------------
          'r'       open for reading (default)
          'w'       open for writing, truncating the file first
          'x'       create a new file and open it for writing
          'a'       open for writing, appending to the end of the file if it exists
          'b'       binary mode
          't'       text mode (default)
          ' '       open a disk file for updating (reading and writing)
          'U'       universal newline mode (deprecated)
          ========= ===============================================================
      
          """
          pass
      

      2.文件操作mode

          'r'       只讀
          'w'       清空文件內(nèi)容,只寫
          'a'       打開文件,追加內(nèi)容
          'b'       二進(jìn)制操作文件,所以就有rb/wb/ab
          ' '       增加讀寫的功能,plus的功能~,所以就有w /r 

      3.讀文件
      1)最常用的是使用with 語句打開文件,不需要考慮關(guān)閉文件,自動(dòng)進(jìn)行文件的關(guān)閉
      2)使用文件句柄f進(jìn)行打開文件,必須自己指定關(guān)閉文件
      3)文件讀取的時(shí)候,可以使用 read() 讀取所有的文件,也可以使用readline() 讀取文件的一行
      4)注意原始文件的編碼,不指定pycharm默認(rèn)的是utf-8,編碼錯(cuò)誤就亂碼

      4.寫文件
      1)寫數(shù)據(jù)到文件,使用 write()函數(shù),但是不是直接寫到硬盤中,是先寫到內(nèi)存中,過一定時(shí)間之后寫到硬盤中。
      2)可以使用 flush() (強(qiáng)刷內(nèi)存中數(shù)據(jù)到硬盤)

      5.文件的常用操作
      關(guān)鍵點(diǎn):文件中光標(biāo)的位置

      seek()   # (注意:文件的編碼,整數(shù)倍的文件編碼單元的字節(jié))
      truncate()  # 截?cái)鄶?shù)據(jù)
      tell()   # 返回光標(biāo)的位置
      修改文件局部?jī)?nèi)容  
          占內(nèi)存修改
          占硬盤修改
         

      6.附加了解內(nèi)容
      1)給文件重命名
      可以使用 : os.rename() 或者 os.replace()
      注意:在使用with打開文件重命名的時(shí)候,會(huì)報(bào)錯(cuò),原因是當(dāng)前文件還沒有被關(guān)閉,是沒有辦法重命名的,可以更換打開方式,使用文件句柄打開。

      2)sys.argv
      sys.argv[]是從程序外部獲取參數(shù)
      sys.argv[0]表示代碼本身文件路徑
      不理解的可以參考一下 這篇文章;https://www.cnblogs.com/aland-1415/p/6613449.html

      字符編碼

      基礎(chǔ)知識(shí)

      1.二進(jìn)制是什么?
      二進(jìn)制是0與1,計(jì)算機(jī)只認(rèn)識(shí)二進(jìn)制。但是人并不認(rèn)識(shí)計(jì)算機(jī)認(rèn)識(shí)的二進(jìn)制(命令轉(zhuǎn)化的二進(jìn)制)。人只認(rèn)知命令。那么命令如何變?yōu)槎M(jìn)制就是需要解決的問題。

      2.ASCII表可以干什么?
      ASCII表表示的256個(gè)字符的順序表。既然有順序,那么人可以讀的是十進(jìn)制,而十進(jìn)制可以變?yōu)槎M(jìn)制,所以ASCII表也就是起到了特殊字符映射到二進(jìn)制的作用。
      Python查看輸入字符對(duì)應(yīng)的二進(jìn)制的十進(jìn)制數(shù)是多少的函數(shù): ord('a')

      注意:此時(shí)我們就可以輸入ASCII表中的字符,就會(huì)轉(zhuǎn)為二進(jìn)制,計(jì)算機(jī)就看懂了。見下圖ASCII表:

      3.數(shù)據(jù)的表示
      在計(jì)算機(jī)中,規(guī)定一個(gè)二進(jìn)制數(shù)為一個(gè)bit(位)。
      八個(gè)二進(jìn)制數(shù)為八個(gè)bit,稱為1個(gè)bytes,表示1個(gè)字節(jié)。
      進(jìn)而:1KB=1024B

      GB2312與GBK

      在基礎(chǔ)知識(shí),已經(jīng)知道了ASCII表是做什么的,那么現(xiàn)在可以表示ASCII表中的字符到計(jì)算機(jī)中了,此時(shí)其他除了ASCII表中的字符去哪里找,有怎么存儲(chǔ)到計(jì)算機(jī)中?
      中國(guó),最先使用的是 GB2312,隨著需要表示字符數(shù)量的增多,開始使用GBK。此時(shí)就可以將漢字轉(zhuǎn)換為計(jì)算機(jī)可以看懂的二進(jìn)制數(shù)。
      注意: GBK是在ASCII表中的進(jìn)行的字符映射擴(kuò)展。此時(shí)表示一個(gè)漢字需要2個(gè)字節(jié)。

      unicode

      unicode編碼,是將全球的語言字符進(jìn)行了整合,所有的語言字符都可以在unicode中找到。
      注意:unicode編碼的所有字符全部需要4個(gè)字節(jié)。

      utf家族

      utf家族的代表明星是: utf-8。
      由于使用unicode編碼,文件的存儲(chǔ)變大,并且不利于網(wǎng)絡(luò)數(shù)據(jù)的傳輸和存儲(chǔ),所以改進(jìn)的方式是utf家族,其中使用對(duì)多的就是utf-8.
      UTF-8: 使用1、2、3、4個(gè)字節(jié)表示所有字符;優(yōu)先使用1個(gè)字符、無法滿足則使增加一個(gè)字節(jié),最多4個(gè)字節(jié)。英文占1個(gè)字節(jié)、歐洲語系占2個(gè)、東亞(中國(guó))占3個(gè),其它及特殊字符占4個(gè)

      編碼的轉(zhuǎn)換

      1.前提知識(shí):
      1)計(jì)算機(jī)的內(nèi)存中數(shù)據(jù),也就是內(nèi)存中的二進(jìn)制0和1,是使用 unicode 編碼。
      2)所有的網(wǎng)絡(luò)傳輸與數(shù)據(jù)存儲(chǔ)(硬盤上的數(shù)據(jù)),是使用utf-8 編碼。
      3)Windows系統(tǒng)的編碼是 gbk。

      2.不同編碼轉(zhuǎn)換方法
      使用unicode編碼作為中介,首先將源編碼文件進(jìn)行解碼(decode()解碼)成為unicode,再將unicode編碼(encode())成為目標(biāo)編碼格式。

      3.pycharm中聲明編碼格式
      推薦聲明:coding:utf-8 # -- encoding:utf-8 --
      注意:第一行寫編碼聲明,此時(shí)pycharm會(huì)自動(dòng)將該文件的編碼格式變?yōu)閡tf-8.自己留意書寫與不寫聲明,pycharm右下角的變化。

      結(jié)束語

      小結(jié)一下,文件操作中,使用with語句打開的時(shí)候,如果對(duì)文件繼續(xù)操作,不手動(dòng)關(guān)閉,會(huì)報(bào)錯(cuò)。(自己踩得大坑,with語句不會(huì)在跳出with之后自動(dòng)關(guān)閉,有一定的時(shí)延)
      字符編碼,真心不好理解,其實(shí)最簡(jiǎn)單的方式就是,分開看內(nèi)存,硬盤,操作系統(tǒng),軟件,以及對(duì)應(yīng)的編碼是什么,就會(huì)很清楚了,祝大家學(xué)習(xí)愉快~~
      一點(diǎn)感悟:時(shí)間很快,就是轉(zhuǎn)眼間的事,盡量將自己的時(shí)間進(jìn)行量化~~~

      來源:https://www./content-4-351051.html

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多