亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python文件處理

系統(tǒng) 2009 0

文章目錄

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

python文件處理

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

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

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

python的文件處理簡單來說分為以下幾點:

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

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

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

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

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

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

因為如果不正常關(guān)閉文件,緩沖在內(nèi)存中的數(shù)據(jù)就不能真正地寫入到文件中,可能造成數(shù)據(jù)丟失的現(xiàn)象

文件的打開

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

運行結(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)容的

運行結(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極力推薦的一種使用方法,因為它能夠自動幫你關(guān)掉文件,你只需要專注對文件的處理就可以了

文件的模式

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

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

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

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

文件的讀取位置

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

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

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

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

              
                
                  123456789
                
                
ABCDEFGHI
IHGFEDCBA

              
            

從頭讀取3個字符

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

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

運行結(jié)果:

            
              
                123
              
            
          

從尾部讀取3個字符

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

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

運行結(jié)果:

            
            
          

實戰(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

              
            

在當前目錄下創(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
              
                ]
              
              
                # 遍歷列表,將每一行都加上下標
              
              
                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
              
                =
              
              
                [
              
              
                ]
              
              
                # 遍歷列表,將每一行都加上下標
              
              
                for
              
               index
              
                ,
              
              line 
              
                in
              
              
                enumerate
              
              
                (
              
              read_File
              
                (
              
              
                )
              
              
                )
              
              
                :
              
              
    new_lines
              
                .
              
              append
              
                (
              
              
                str
              
              
                (
              
              index
              
                +
              
              
                1
              
              
                )
              
              
                +
              
              
                ':'
              
              
                +
              
              line
              
                )
              
              

write_File
              
                (
              
              new_lines
              
                )
              
            
          

運行結(jié)果:

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

            
          

打開9102.txt文件

            
              
                1
              
              :hahaha

              
                2
              
              :hary

              
                3
              
              :natasha

              
                4
              
              :mary

            
          

實戰(zhàn)2

在D盤python目錄下創(chuàng)建hahaha文件夾,網(wǎng)上下載幾張圖片放進去,用代碼將全部照片重命名為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
              
                (
              
              
                )
              
              
                #得到進程當前工作目錄
              
              
    os
              
                .
              
              chdir
              
                (
              
              r
              
                "D:\python\hahaha"
              
              
                )
              
              
                #將當前工作目錄修改為待修改文件夾的位置
              
              
    num
              
                =
              
              
                1
              
              
                #名稱變量
              
              
                for
              
               fileName 
              
                in
              
               fileList
              
                :
              
              
                #遍歷文件夾中所有文件
              
              
        pat
              
                =
              
              
                ".+\.(jpg|png|gif)"
              
              
                #匹配文件名正則表達式
              
              
        pattern 
              
                =
              
               re
              
                .
              
              findall
              
                (
              
              pat
              
                ,
              
              fileName
              
                )
              
              
                #進行匹配
              
              
        os
              
                .
              
              rename
              
                (
              
              fileName
              
                ,
              
              
                (
              
              
                str
              
              
                (
              
              num
              
                )
              
              
                +
              
              
                '.'
              
              
                +
              
              pattern
              
                [
              
              
                0
              
              
                ]
              
              
                )
              
              
                )
              
              
                #文件重新命名
              
              
        num 
              
                =
              
               num
              
                +
              
              
                1
              
              
                #改變編號,繼續(xù)下一項
              
              
                print
              
              
                (
              
              
                "---------------------------------------------------"
              
              
                )
              
              
    os
              
                .
              
              chdir
              
                (
              
              currentpath
              
                )
              
              
                #改回程序運行前的工作目錄
              
              
    sys
              
                .
              
              stdin
              
                .
              
              flush
              
                (
              
              
                )
              
              
                #刷新
              
              
                print
              
              
                (
              
              
                "修改后:"
              
              
                +
              
              
                str
              
              
                (
              
              os
              
                .
              
              listdir
              
                (
              
              r
              
                "D:\python\hahaha"
              
              
                )
              
              
                )
              
              
                )
              
              
                #輸出修改后文件夾中包含的文件
              
              
renameall
              
                (
              
              
                )
              
            
          

運行結(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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产在线观看一区二区三区四区 | 国产综合视频在线 | 人体做爰aaaa免费 | 国产成人精品高清在线观看99 | 色国产在线视频一区 | 婷婷中文在线 | 日本高清在线一区二区三区 | 亚洲一区二区三区精品影院 | 日本综合色 | 欧美激情免费观看一区 | 亚洲专区一路线二 | 青青青青久久精品国产一百度 | 国产视频一区在线观看 | 欧美国产精品不卡在线观看 | 国产区精品福利在线观看精品 | 欧美体内she精视频毛片 | 欧美性xxxx偷拍 | 午夜伊人 | 色姑娘综合 | 欧美中文字幕在线视频 | 久久er99热精品一区二区 | 日日摸夜夜爽久久综合 | 成年人性生活免费视频 | 精品国产区一区二区三区在线观看 | 99精品视频在线播放2 | 午夜精品久久久久久久99 | 奇米影音| 一区二区精品视频 | 国产高清美女一级a毛片久久 | 黄色录像一级毛片 | 最新69成人精品毛片 | 激情狠狠干 | 国产福利视频一区二区三区四区 | 四虎影视在线播放 | 国产成人啪午夜精品网站男同 | 欧美日韩一区二区在线观看视频 | 久久久国产成人精品 | 日韩中文字幕免费观看 | 在线播放国产区 | 日韩欧美中 | 亚洲网在线观看 |