欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python文件處理

系統(tǒng) 1888 0

文章目錄

  • python文件處理
    • 文件的讀取和關(guān)閉
      • 文件的打開
      • 文件的讀取
      • 文件的寫入
      • 文件的關(guān)閉
    • 文件的模式
    • 文件的讀取位置
      • 從頭讀取3個字符
      • 從尾部讀取3個字符
    • 實(shí)戰(zhàn)1
    • 實(shí)戰(zhàn)2

python文件處理

python對文件處理分為兩種,一種是本地處理,而另外一種就是通過網(wǎng)絡(luò)數(shù)據(jù)處理(也就是爬蟲相關(guān)),而本地的數(shù)據(jù)處理,主要是通過文件的都和寫完成

我們先想一想平時對文件處理一般遇到過哪些問題:

  • 如何讀取一個文件的內(nèi)容,然后處理,最后寫到一個新的文件
  • 如何更改一個文件夾下面的某一些文件名

python的文件處理簡單來說分為以下幾點(diǎn):

  • 文件的讀寫和關(guān)閉
  • 文件的模式
  • 文件的讀取位置

文件的讀取和關(guān)閉

python中想要獲取文件里的內(nèi)容,先要打開文件,然后才能都和寫,而且寫完之后一定要記得關(guān)閉

python中對文件的打開是通過open函數(shù)來獲取一個句柄

  • 獲取 的句柄,可以用 f.read() 進(jìn)行讀入
  • 獲取 的句柄 f 之后,就可以 f.weite() 進(jìn)行寫入
  • 當(dāng)你文件處理完畢之后,要關(guān)閉文件

應(yīng)該會有人和博主思考的問題一樣:為什么要關(guān)閉文件?

因?yàn)槿绻徽jP(guān)閉文件,緩沖在內(nèi)存中的數(shù)據(jù)就不能真正地寫入到文件中,可能造成數(shù)據(jù)丟失的現(xiàn)象

文件的打開

            
              file_obj
              
                =
              
              
                open
              
              
                (
              
              filename
              
                ,
              
              mode
              
                =
              
              
                'r'
              
              
                ,
              
              buffering
              
                =
              
              
                -
              
              
                1
              
              
                )
              
              
                # 這里一共有3個參數(shù),第一個是強(qiáng)制參數(shù),后面兩個是可選的
              
              
                # mode可以是讀,也可以是寫,或者是追加,一般默認(rèn)的是讀文件
              
              
                # buffering主要是設(shè)置緩沖區(qū),一般我們都是用-1表示系統(tǒng)默認(rèn)的緩沖區(qū),若寫100,則表示緩沖區(qū)為100
              
            
          

文件的讀取

            
              f
              
                =
              
              
                open
              
              
                (
              
              r
              
                'somefile.txt'
              
              
                )
              
              
f
              
                .
              
              readline
              
                (
              
              
                )
              
              
                # 表示讀文件的一行
              
              
f
              
                .
              
              readlines
              
                (
              
              
                )
              
              
                # 表示把文件從頭到位都讀出來,并保存為一個列表
              
            
          

例如我們現(xiàn)在在D盤的python目錄里面新建

123321.txt

123321.py

打開123321.txt輸入:

              
                
                  123456789
                
                
ABCDEFGHI
IHGFEDCBA

              
            

打開123321.py,寫入代碼如下:

            
              f
              
                =
              
              
                open
              
              
                (
              
              r
              
                '123321.txt'
              
              
                )
              
              
                print
              
              
                (
              
              f
              
                .
              
              readline
              
                (
              
              
                )
              
              
                )
              
              
                print
              
              
                (
              
              f
              
                .
              
              readlines
              
                (
              
              
                )
              
              
                )
              
            
          

運(yùn)行結(jié)果如下:

            
              
                123456789
              
              
                [
              
              
                'ABCDEFGHI\n'
              
              
                ,
              
              
                'IHGFEDCBA'
              
              
                ]
              
            
          

文件的寫入

            
              f
              
                =
              
              
                open
              
              
                (
              
              r
              
                'somefile.txt,'
              
              w'
              
                )
              
              
f
              
                .
              
              write
              
                (
              
              
                )
              
              
                # 表示把字符串寫入
              
              
f
              
                .
              
              writelines
              
                (
              
              
                )
              
              
                # 表示把一個列表寫入
              
              
f
              
                .
              
              close
              
                (
              
              
                )
              
              
                # 表示關(guān)閉文件
              
            
          

例如我們現(xiàn)在在D盤的python目錄里面新建

ABCCBA.txt

ABCCBA.py

打開ABCCBA.py,寫入代碼如下:

            
              f
              
                =
              
              
                open
              
              
                (
              
              r
              
                'ABCCBA.txt'
              
              
                ,
              
              
                'w'
              
              
                )
              
              
f
              
                .
              
              write
              
                (
              
              
                '123321'
              
              
                )
              
              
f
              
                .
              
              writelines
              
                (
              
              
                [
              
              
                '\nABCDEFGHI\n'
              
              
                ,
              
              
                'IHGFEDCBA'
              
              
                ]
              
              
                )
              
              
f
              
                .
              
              close
              
                (
              
              
                )
              
            
          

此處在后面如果沒寫入 f.close() ,那么在最后你打開ABCCBA.txt文件后是看不到你寫入的內(nèi)容的

運(yùn)行結(jié)果:

打開D盤的python目錄下的ABCCBA.txt文件

            
              
                123321
              
              
ABCDEFGHI
IHGFEDCBA

            
          

文件的關(guān)閉

此處我介紹兩種關(guān)閉方法

1)

            
              f
              
                =
              
              
                open
              
              
                (
              
              r
              
                'somefile.txt'
              
              
                )
              
              
                .
              
              
                .
              
              
                .
              
              
                .
              
              
                .
              
              
                .
              
              
                .
              
              
                .
              
              
                .
              
              
                .
              
              
                .
              
              
                .
              
              
                .
              
              
f
              
                .
              
              close
              
                (
              
              
                )
              
            
          

2)

            
              
                with
              
              
                open
              
              
                (
              
              r
              
                'somefile.txt'
              
              
                )
              
              
                as
              
               f
              
                :
              
              
    f
              
                .
              
              readlines
              
                (
              
              
                )
              
            
          

with用法是python極力推薦的一種使用方法,因?yàn)樗軌蜃詣訋湍汴P(guān)掉文件,你只需要專注對文件的處理就可以了

文件的模式

在上面我僅僅只列舉了python的讀和寫,那么其他的模式該怎么辦呢?

其實(shí)python只需要改變一下open里面的模式參數(shù)就可以了

? open函數(shù)中的模式參數(shù)

描述
‘r’ 讀模式
‘w’ 寫模式
‘a(chǎn)’ 追加模式
‘b’ 二進(jìn)制模式
‘+’ 讀/寫模式
‘r+’ 以讀寫模式打開
‘w+’ 以讀寫模式打開
‘a(chǎn)+’ 以讀寫模式打開
‘rb’ 以二進(jìn)制讀模式打開

文件的讀取位置

有時候我們就只想讀取文件中的某一部分,或者我們需要從文章的某一部分開始讀取

那么這就要用到 seek() 函數(shù)

            
              file_obj
              
                .
              
              seek
              
                (
              
              offset
              
                ,
              
              whence
              
                =
              
              
                0
              
              
                )
              
              
                # seek 主要是在文件中移動指針,從`whence`(0表示文件的開頭,1表示當(dāng)前位置,2表示文件的末尾)偏移offset個字符
              
            
          

例如在D盤python目錄下的123321.txt文件

              
                
                  123456789
                
                
ABCDEFGHI
IHGFEDCBA

              
            

從頭讀取3個字符

在當(dāng)前目錄下創(chuàng)建seek1.py文件,寫入代碼如下:

            
              f
              
                =
              
              
                open
              
              
                (
              
              r
              
                '123321.txt'
              
              
                )
              
              
f
              
                .
              
              seek
              
                (
              
              
                0
              
              
                ,
              
              
                0
              
              
                )
              
              
                print
              
              
                (
              
              f
              
                .
              
              read
              
                (
              
              
                3
              
              
                )
              
              
                )
              
              
f
              
                .
              
              close
              
                (
              
              
                )
              
            
          

運(yùn)行結(jié)果:

            
              
                123
              
            
          

從尾部讀取3個字符

在當(dāng)前目錄下創(chuàng)建seek2.py文件,寫入代碼如下:

            
              f
              
                =
              
              
                open
              
              
                (
              
              b
              
                '123321.txt'
              
              
                )
              
              
f
              
                .
              
              seek
              
                (
              
              
                -
              
              
                3
              
              
                ,
              
              
                2
              
              
                )
              
              
                print
              
              
                (
              
              f
              
                .
              
              read
              
                (
              
              
                3
              
              
                )
              
              
                )
              
              
f
              
                .
              
              close
              
                (
              
              
                )
              
            
          

運(yùn)行結(jié)果:

            
            
          

實(shí)戰(zhàn)1

在D盤python目錄里面創(chuàng)建2019.txt文件,寫入:

              
                hahaha
hary
natasha
mary

              
            

請把2019.txt文件里面的內(nèi)容都出來,寫到一個新的文件,文件名:9102.txt,格式按照下面這種:

              
                
                  1
                
                
                  :
                
                hahaha

                
                  2
                
                
                  :
                
                hary

                
                  3
                
                
                  :
                
                natasha

                
                  4
                
                
                  :
                
                mary

              
            

在當(dāng)前目錄下創(chuàng)建test.py,代碼如下:

            
              f
              
                =
              
              
                open
              
              
                (
              
              
                '2019.txt'
              
              
                )
              
              
                # 打開文件
              
              
count
              
                =
              
              f
              
                .
              
              readlines
              
                (
              
              
                )
              
              
                # 從文件中把內(nèi)容都讀出來,保存到列表中
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                0
              
              
                ,
              
              
                len
              
              
                (
              
              count
              
                )
              
              
                )
              
              
                :
              
              
                # 關(guān)閉文件
              
              
    count
              
                [
              
              i
              
                ]
              
              
                =
              
              
                str
              
              
                (
              
              i
              
                +
              
              
                1
              
              
                )
              
              
                +
              
              
                ':'
              
              
                +
              
              count
              
                [
              
              i
              
                ]
              
              
                # 遍歷列表,將每一行都加上下標(biāo)
              
              
                print
              
              
                (
              
              count
              
                )
              
              
f
              
                .
              
              close
              
                (
              
              
                )
              
              
                # 關(guān)閉文件
              
              

f
              
                =
              
              
                open
              
              
                (
              
              
                '9102.txt'
              
              
                ,
              
              
                'w'
              
              
                )
              
              
                # 打開文件
              
              
f
              
                .
              
              writelines
              
                (
              
              count
              
                )
              
              
                # 把新的內(nèi)容寫入文件
              
              
f
              
                .
              
              close
              
                (
              
              
                )
              
            
          

優(yōu)化重構(gòu)代碼:

            
              
                def
              
              
                read_File
              
              
                (
              
              
                )
              
              
                :
              
              
                # 把讀文件抽成一個函數(shù)
              
              
                with
              
              
                open
              
              
                (
              
              r
              
                '2019.txt'
              
              
                ,
              
              
                'r'
              
              
                )
              
              
                as
              
               f
              
                :
              
              
        read_lines_from_file
              
                =
              
              f
              
                .
              
              readlines
              
                (
              
              
                )
              
              
                return
              
               read_lines_from_file


              
                def
              
              
                write_File
              
              
                (
              
              count
              
                =
              
              
                [
              
              
                ]
              
              
                )
              
              
                :
              
              
                # 把寫文件抽成一個函數(shù)
              
              
                with
              
              
                open
              
              
                (
              
              r
              
                '9102.txt'
              
              
                ,
              
              
                'w'
              
              
                )
              
              
                as
              
               f
              
                :
              
              
        f
              
                .
              
              writelines
              
                (
              
              count
              
                )
              
              

new_lines
              
                =
              
              
                [
              
              
                ]
              
              
                # 遍歷列表,將每一行都加上下標(biāo)
              
              
                for
              
               index
              
                ,
              
              line 
              
                in
              
              
                enumerate
              
              
                (
              
              read_File
              
                (
              
              
                )
              
              
                )
              
              
                :
              
              
    new_lines
              
                .
              
              append
              
                (
              
              
                str
              
              
                (
              
              index
              
                +
              
              
                1
              
              
                )
              
              
                +
              
              
                ':'
              
              
                +
              
              line
              
                )
              
              

write_File
              
                (
              
              new_lines
              
                )
              
            
          

運(yùn)行結(jié)果:

            
              ['1:hahaha\n', '2:hary\n', '3:natasha\n', '4:mary']

            
          

打開9102.txt文件

            
              
                1
              
              :hahaha

              
                2
              
              :hary

              
                3
              
              :natasha

              
                4
              
              :mary

            
          

實(shí)戰(zhàn)2

在D盤python目錄下創(chuàng)建hahaha文件夾,網(wǎng)上下載幾張圖片放進(jìn)去,用代碼將全部照片重命名為1.jpg,2.jpg,3.jpg,…以此類推

在D盤python目錄下創(chuàng)建test2.py,代碼如下:

            
              
                import
              
               os

              
                import
              
               re

              
                import
              
               sys

              
                def
              
              
                renameall
              
              
                (
              
              
                )
              
              
                :
              
              
    fileList 
              
                =
              
               os
              
                .
              
              listdir
              
                (
              
              r
              
                "D:\python\hahaha"
              
              
                )
              
              
                #待修改文件夾
              
              
                print
              
              
                (
              
              
                "修改前:"
              
              
                +
              
              
                str
              
              
                (
              
              fileList
              
                )
              
              
                )
              
              
                #輸出文件夾中包含的文件
              
              
    currentpath 
              
                =
              
               os
              
                .
              
              getcwd
              
                (
              
              
                )
              
              
                #得到進(jìn)程當(dāng)前工作目錄
              
              
    os
              
                .
              
              chdir
              
                (
              
              r
              
                "D:\python\hahaha"
              
              
                )
              
              
                #將當(dāng)前工作目錄修改為待修改文件夾的位置
              
              
    num
              
                =
              
              
                1
              
              
                #名稱變量
              
              
                for
              
               fileName 
              
                in
              
               fileList
              
                :
              
              
                #遍歷文件夾中所有文件
              
              
        pat
              
                =
              
              
                ".+\.(jpg|png|gif)"
              
              
                #匹配文件名正則表達(dá)式
              
              
        pattern 
              
                =
              
               re
              
                .
              
              findall
              
                (
              
              pat
              
                ,
              
              fileName
              
                )
              
              
                #進(jìn)行匹配
              
              
        os
              
                .
              
              rename
              
                (
              
              fileName
              
                ,
              
              
                (
              
              
                str
              
              
                (
              
              num
              
                )
              
              
                +
              
              
                '.'
              
              
                +
              
              pattern
              
                [
              
              
                0
              
              
                ]
              
              
                )
              
              
                )
              
              
                #文件重新命名
              
              
        num 
              
                =
              
               num
              
                +
              
              
                1
              
              
                #改變編號,繼續(xù)下一項(xiàng)
              
              
                print
              
              
                (
              
              
                "---------------------------------------------------"
              
              
                )
              
              
    os
              
                .
              
              chdir
              
                (
              
              currentpath
              
                )
              
              
                #改回程序運(yùn)行前的工作目錄
              
              
    sys
              
                .
              
              stdin
              
                .
              
              flush
              
                (
              
              
                )
              
              
                #刷新
              
              
                print
              
              
                (
              
              
                "修改后:"
              
              
                +
              
              
                str
              
              
                (
              
              os
              
                .
              
              listdir
              
                (
              
              r
              
                "D:\python\hahaha"
              
              
                )
              
              
                )
              
              
                )
              
              
                #輸出修改后文件夾中包含的文件
              
              
renameall
              
                (
              
              
                )
              
            
          

運(yùn)行結(jié)果:

            
              修改前:
              
                [
              
              
                'ACG.GY_01.jpg'
              
              
                ,
              
              
                'ACG.GY_02.jpg'
              
              
                ,
              
              
                'ACG.GY_03.jpg'
              
              
                ,
              
              
                'ACG.GY_04.jpg'
              
              
                ,
              
              
                'ACG.GY_05.jpg'
              
              
                ,
              
              
                'ACG.GY_06.jpg'
              
              
                ,
              
              
                'ACG.GY_07.jpg'
              
              
                ,
              
              
                'ACG.GY_08.jpg'
              
              
                ,
              
              
                'ACG.GY_09.jpg'
              
              
                ,
              
              
                'ACG.GY_10.jpg'
              
              
                ,
              
              
                'ACG.GY_11.jpg'
              
              
                ,
              
              
                'ACG.GY_12.jpg'
              
              
                ,
              
              
                'ACG.GY_13.jpg'
              
              
                ,
              
              
                'ACG.GY_14.jpg'
              
              
                ,
              
              
                'ACG.GY_15.jpg'
              
              
                ,
              
              
                'ACG.GY_16.jpg'
              
              
                ,
              
              
                'ACG.GY_17.jpg'
              
              
                ,
              
              
                'ACG.GY_18.jpg'
              
              
                ,
              
              
                'ACG.GY_19.jpg'
              
              
                ,
              
              
                'ACG.GY_20.jpg'
              
              
                ,
              
              
                'ACG.GY_21.jpg'
              
              
                ,
              
              
                'ACG.GY_22.jpg'
              
              
                ,
              
              
                'ACG.GY_23.jpg'
              
              
                ,
              
              
                'ACG.GY_24.jpg'
              
              
                ]
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
修改后:
              
                [
              
              
                '1.jpg'
              
              
                ,
              
              
                '2.jpg'
              
              
                ,
              
              
                '3.jpg'
              
              
                ,
              
              
                '4.jpg'
              
              
                ,
              
              
                '5.jpg'
              
              
                ,
              
              
                '6.jpg'
              
              
                ,
              
              
                '7.jpg'
              
              
                ,
              
              
                '8.jpg'
              
              
                ,
              
              
                '9.jpg'
              
              
                ,
              
              
                '10.jpg'
              
              
                ,
              
              
                '11.jpg'
              
              
                ,
              
              
                '12.jpg'
              
              
                ,
              
              
                '13.jpg'
              
              
                ,
              
              
                '14.jpg'
              
              
                ,
              
              
                '15.jpg'
              
              
                ,
              
              
                '16.jpg'
              
              
                ,
              
              
                '17.jpg'
              
              
                ,
              
              
                '18.jpg'
              
              
                ,
              
              
                '19.jpg'
              
              
                ,
              
              
                '20.jpg'
              
              
                ,
              
              
                '21.jpg'
              
              
                ,
              
              
                '22.jpg'
              
              
                ,
              
              
                '23.jpg'
              
              
                ,
              
              
                '24.jpg'
              
              
                ]
              
            
          

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国内一级特黄女人精品片 | 香蕉久久一区二区不卡无毒影院 | 久草在线免费新视频 | 日本不卡在线一区二区三区视频 | 午夜久久久久久禁播电影 | 国产精品国产亚洲精品不卡 | 欧美一级黄视频 | 色婷婷综合缴情综六月 | 两性午夜视频 | 色男天堂 | 亚洲精品午夜视频 | 午夜久久久久久久久久一区二区 | 精品少妇一区二区 | 日韩日日夜夜 | 成人综合在线观看 | 99久久精品免费观看区一 | 亚洲精品男人天堂 | 播五月婷婷 | 亚洲国产一区二区三区四区 | 久久久久免费 | 欧美日一区 | 日本欧美一二三区色视频 | 天堂在线中文 | 国产一区二区三区久久久久久久久 | 素人视频在线观看免费 | 欧美亚洲视频在线观看 | 福利视频在线免费观看 | 色综合久久中文字幕网 | 亚洲不卡视频在线 | 亚洲午夜精品A片久久不卡蜜桃 | 日本无码V视频一区二区 | 激情五月综合婷婷 | 99九九精品视频 | 91精品国产综合久久久久久丝袜 | 久草新| 亚洲午夜网未来影院 | 欧美在线网站 | 亚洲黄网站wwwwww | 我和我的祖国电影在线观看免费版高清 | 国精品日韩欧美一区二区三区 | 成人精品一区久久久久 |