1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        【Python基礎(chǔ)】Python處理文件的幾個(gè)常用小知識(shí)

        共 2922字,需瀏覽 6分鐘

         ·

        2020-11-03 18:45



        作者:來(lái)自讀者投稿

        來(lái)源:Python數(shù)據(jù)之道

        Python處理文件的幾個(gè)常用小知識(shí)

        Python 這門(mén)語(yǔ)言有個(gè)很大的用途就是使用它來(lái)進(jìn)行文件處理,學(xué)會(huì)處理文件和保存數(shù)據(jù)可以讓你的程序使用起來(lái)更加容易和方便,因此小編為大家準(zhǔn)備了幾個(gè)處理文件常用的幾個(gè)小知識(shí),快來(lái)一起學(xué)習(xí)吧!

        —??01?

        讀取文件數(shù)據(jù)

        文本文件可存儲(chǔ)的數(shù)據(jù)量非常豐富,像天氣數(shù)據(jù)、交通數(shù)據(jù)、文學(xué)作品等。每當(dāng)我們需要分析或修改儲(chǔ)存在文件中的信息時(shí),讀取文件就顯得尤為重要。想讀取一個(gè)文件的信息,我們可以一次性讀取全部?jī)?nèi)容,也可以每次一行逐步讀取。

        讀取整個(gè)文件

        我們先來(lái)創(chuàng)建一個(gè)包含幾行文本的文件,在編輯器中輸入以下數(shù)據(jù)行,保存為 txt 格式:

        pi.txt:
        3.1415926535
        ??8979323846
        ??2643383279

        打開(kāi)并讀取該文件:

        with?open('pi.txt')?as?file:
        ????contents?=?file.read()
        ????print(contents)

        在這行程序中,出現(xiàn)了兩個(gè)函數(shù)open( )和read( )。

        函數(shù)open( )用于打開(kāi)一個(gè)文件,它接受的參數(shù)是要打開(kāi)文件的名稱(chēng),Python 會(huì)在當(dāng)前執(zhí)行的文件目錄中查找指定的文件,然后返回一個(gè)表示文件的對(duì)象。

        方法read( ) 用于讀取這個(gè)文件的全部?jī)?nèi)容,并將其作為一個(gè)長(zhǎng)長(zhǎng)的字符串儲(chǔ)存在變量contents中。但這段程序的運(yùn)行結(jié)果大家可以嘗試一下,它會(huì)把這個(gè)文本的內(nèi)容全部輸出并在最后多出一行空行,這是因?yàn)閞ead( )到達(dá)文件末尾時(shí)會(huì)返回一個(gè)空字符串,顯示在結(jié)果就是一個(gè)空行。如果想要?jiǎng)h除末尾的空行,可以在print中使用rstrip( ):

        print(contents.rstrip())

        關(guān)于文件路徑,我們需要注意的是,Linux 系統(tǒng)和 windows 有一點(diǎn)不同:

        在Linux和OS X中(使用斜杠/):

        with?open('files/filename.txt')?as?file_object:

        在Windows中(使用反斜杠\):

        with?open('files\filename.txt')?as?file_object:

        逐行讀取

        如果想每次一行的讀取文件,可對(duì)文件對(duì)象使用for循環(huán):

        filename='pi.txt'

        with?open(filename)?as?file:
        ???for?line?in?file:
        ????????print(line)???

        同樣,為了刪除每一行多余出來(lái)的空行,我們可以使用rstrip( ):

        filename='pi.txt'

        with?open(filename)?as?file:
        ???for?line?in?file:
        ????????print(line.rstrip())???

        創(chuàng)建一個(gè)包含文件各行內(nèi)容的列表

        當(dāng)使用with時(shí),open( )返回的文件對(duì)象只能在with代碼塊內(nèi)使用。如果想要在代碼塊外訪(fǎng)問(wèn)文件內(nèi)容時(shí),我們可以在with代碼塊內(nèi)將文件的各行儲(chǔ)存在一個(gè)列表中,并在with代碼塊外使用該列表訪(fǎng)問(wèn)。

        filename='pi.txt'

        with?open(filename)?as?file:
        ??lines?=?file.readlines()

        for?line?in?lines:
        ????print(line.rstrip())

        方法readlines( )表示從文件中讀取每一行,并將其儲(chǔ)存在一個(gè)列表中。

        使用文件內(nèi)容

        filename='pi.txt'

        with?open(filename)?as?file:
        ???lines?=?file.readlines()

        ss=''
        for?line?in?lines:
        ????ss?+=?line.strip()
        print(ss)

        該程序運(yùn)行結(jié)果為:3.141592653589793238462643383279

        —??02?

        寫(xiě)入文件

        寫(xiě)入空文件

        將文本寫(xiě)入文件,可以在調(diào)用open( )時(shí)提供另一個(gè)實(shí)參。即打開(kāi)文件時(shí),可以指定需要的模式:'r'讀取模式,'w'寫(xiě)入模式,'a'附加模式,'r+'讀取和寫(xiě)入模式。python 默認(rèn)只讀模式。

        with?open(filename,'w')?as?file:
        ????file.write("abcdefg")

        注意:python 只能將字符串寫(xiě)入文本文件,如果想把數(shù)值數(shù)據(jù)儲(chǔ)存到文本文件,必須先使用函數(shù)str( )將其轉(zhuǎn)為字符串格式。

        寫(xiě)入多行

        with?open(filename,'w')?as?file:
        ????file.write("abcdefg\n")
        ????file.write("hijklmn\n")

        存儲(chǔ)數(shù)據(jù)

        python中常使用json來(lái)存儲(chǔ)數(shù)據(jù)。json可以將簡(jiǎn)單的python數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)存到文件中,并在程序再次運(yùn)行時(shí)加載該文件中的數(shù)據(jù)。

        JSON數(shù)據(jù)格式并非python專(zhuān)用,它是一種常用的數(shù)據(jù)格式,很有用,也易于學(xué)習(xí)。

        json.dump( ) 和 json.load( )

        這兩個(gè)函數(shù)分別用于儲(chǔ)存數(shù)據(jù)和加載數(shù)據(jù)。json.dump() 接受兩個(gè)實(shí)參:要儲(chǔ)存的數(shù)據(jù)和用于儲(chǔ)存數(shù)據(jù)的文件對(duì)象。json.load() 用于加載存儲(chǔ)在json文件中的信息。

        import?json
        num?=?[1,2,3,4,5]
        filename?=?'a.json'
        with?open(filename,'w')?as?f:
        ????json.dump(num,f)
        with?open(filename)?as?f:
        ????num?=?json.load(f)
        print(num)

        這是一種在程序之間共享數(shù)據(jù)的簡(jiǎn)單方式。

        實(shí)現(xiàn)一個(gè)小功能

        下面這個(gè)程序可以實(shí)現(xiàn)我們常常在游戲開(kāi)頭時(shí)遇到的一個(gè)小功能,一起來(lái)試試吧!

        import?json
        #?如果以前儲(chǔ)存了用戶(hù)名就加載它,否則,就提示用戶(hù)輸入名字并存儲(chǔ)
        filename?=?'name.json'
        try:
        ????with?open(filename)?as?f:
        ????????username=json.load(f)
        except?FileNotFoundError:
        ????name?=?input("你叫什么名字?")
        ?with?open(filename,'w')?as?f:
        ?????json.dump(name,f)
        ?????print("我們會(huì)記住你的,"+name+"!")
        else:
        ????print("歡迎回來(lái),"+name+"!")


        往期精彩回顧





        獲取一折本站知識(shí)星球優(yōu)惠券,復(fù)制鏈接直接打開(kāi):

        https://t.zsxq.com/y7uvZF6

        本站qq群704220115。

        加入微信群請(qǐng)掃碼:

        瀏覽 67
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            久久伊人亚洲 | 午夜插 | 国产帅男男Gay网站视频 | 国产性爱在线播放 | 国产片婬乱一级毛片视频最新 | 他的舌头舔得我受不了 | 张津瑜警花国产精品一区 | 特级西西人体www高清大胆 | 亚 洲 成 人 视 频 在 线 | 91影院成人 |