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

Python 文件操作

系統 1613 0

一、方法介紹

Python open() 方法用于打開一個文件,并返回文件對象,在對文件進行處理過程都需要使用到這個函數,如果該文件無法被打開,會拋出 OSError。

注意: 使用 open() 方法一定要保證關閉文件對象,即調用 close() 方法。

            
              1
            
            
              #
            
            
               open函數的語法格式
            
            
              2
            
            
              3
            
             open(file, mode=
            
              '
            
            
              r
            
            
              '
            
            , buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=
            
              None)

            
            
              4
            
            
                  file: 必需,文件路徑(相對或者絕對路徑)。

            
            
              5
            
            
                  mode: 可選,文件打開模式

            
            
              6
            
            
                  buffering: 設置緩沖

            
            
              7
            
            
                  errors: 報錯級別

            
            
              8
            
            
                  newline: 區分換行符

            
            
              9
            
                 closefd: 傳入的file參數類型
          

mode的參數有:

模式
描述
r
以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。
w
打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
a
打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。
rb
以二進制格式打開一個文件用于只讀。文件指針將會放在文件的開頭。這是默認模式。
r+
打開一個文件用于讀寫。文件指針將會放在文件的開頭。先讀后寫才是安全的
rb+
以二進制格式打開一個文件用于讀寫。文件指針將會放在文件的開頭。
w+
打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件
wb+
以二進制格式打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
wb
以二進制格式打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
ab
以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。
a+
打開一個文件用于讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用于讀寫。
ab+
以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用于讀寫。


file中的常用方法:

方法
描述
file.close()
關閉文件。關閉后文件不能再進行讀寫操作。
file.flush()
刷新文件內部緩沖,直接把內部緩沖區的數據立刻寫入文件, 而不是被動的等待輸出緩沖區寫入。
file.next()
返回文件下一行
file.read([size])
從文件讀取指定的字節數,如果未給定或為負則讀取所有
file.readline([size])
讀取整行,包括 "\n" 字符。
file.readlines([sizehint])
讀取所有行并返回列表,若給定sizeint>0,返回總和大約為sizeint
字節的行, 實際讀取值可能比sizhint較大, 因為需要填充緩沖區。
file.seek(offset[, whence])
設置文件當前位置
file.tell()
返回文件當前位置。
file.truncate([size])
截取文件,截取的字節通過size指定,默認為當前文件位置。
file.write(str)
將字符串寫入文件,沒有返回值
file.writelines(sequence)
向文件寫入一個序列字符串列表,如果需要換行則要自己加入每行的換行符。

二、文件的操作

2.1?讀取文件

2.1.1?read

              
                 1
              
              
                #
              
              
                 路徑有兩種:
              
              
                 2
              
              
                #
              
              
                 1.相對路徑,相對于當前程序所在的文件夾
              
              
                 3
              
              
                #
              
              
                    ../ 返回上一層目錄
              
              
                 4
              
              
                #
              
              
                    相對的是當前程序所在的文件夾
              
              
                 5
              
              
                #
              
              
                 2.絕對路徑
              
              
                 6
              
              
                #
              
              
                   * 從磁盤根目錄尋找
              
              
                 7
              
              
                #
              
              
                   * 互聯網上的絕對路徑
              
              
                 8
              
              
                 9
              
               f = open(
              
                "
              
              
                a.txt
              
              
                "
              
              , mode=
              
                "
              
              
                r
              
              
                "
              
              , encoding=
              
                "
              
              
                utf-8
              
              
                "
              
              
                )

              
              
                10
              
              
                11
              
              
                #
              
              
                 read函數的參數是讀取多少個字節,如果不加參數,默認是一次性讀取文件的所有內容
              
              
                12
              
               data =
              
                 f.read()

              
              
                13
              
              
                #
              
              
                 打印讀取的文件內容
              
              
                14
              
              
                print
              
              
                (data)

              
              
                15
              
              
                16
              
              
                #
              
              
                 關閉文件
              
              
                17
              
               f.close()
            

2.1.2?readlines

就像read沒有參數時一樣,readlines可以按照行的方式把整個文件中的內容進行一次性讀取,并且返回的是一個列表,其中每一行的數據為一個元素。

              f = open(
              
                "
              
              
                a.txt
              
              
                "
              
              , mode=
              
                "
              
              
                r
              
              
                "
              
              , encoding=
              
                "
              
              
                utf-8
              
              
                "
              
              
                )

              
              
data =
              
                 f.readlines()

              
              
                #
              
              
                 打印讀取的文件內容
              
              
                print
              
              (type(data))   
              
                #
              
              
                
              
              
                #
              
              
                 關閉文件
              
              
f.close()
            

2.1.3 readline?

讀取一行數據

              f = open(
              
                "
              
              
                a.txt
              
              
                "
              
              , mode=
              
                "
              
              
                r
              
              
                "
              
              , encoding=
              
                "
              
              
                utf-8
              
              
                "
              
              
                )


              
              
                #
              
              
                 只讀取一行數據
              
              
data =
              
                 f.readline()

              
              
                #
              
              
                 打印讀取的文件內容
              
              
                print
              
              
                (data)


              
              
                #
              
              
                 關閉文件
              
              
f.close()
            

2.1.4?讀取大文件

              f = open(
              
                "
              
              
                a.txt
              
              
                "
              
              , mode=
              
                "
              
              
                r
              
              
                "
              
              , encoding=
              
                "
              
              
                utf-8
              
              
                "
              
              
                )


              
              
                #
              
              
                 讀取大文件的方法
              
              
                for
              
               line 
              
                in
              
              
                 f:
    
              
              
                print
              
              
                (line)

              
              
                #
              
              
                 關閉文件
              
              
f.close()
            

對可迭代對象 f,進行迭代遍歷: for line in f ,會自動地使用緩沖IO(buffered IO)以及內存管理,而不必擔心任何大文件的問題。

?2.2?寫文件

            
              1
            
            
              #
            
            
               w 模式寫文件會將源文件覆蓋
            
            
              2
            
             f = open(
            
              "
            
            
              a.txt
            
            
              "
            
            , mode=
            
              "
            
            
              w
            
            
              "
            
            , encoding=
            
              "
            
            
              utf-8
            
            
              "
            
            
              )

            
            
              3
            
            
              4
            
             f.write(
            
              "
            
            
              aaa
            
            
              "
            
            
              )

            
            
              5
            
            
              #
            
            
               關閉
            
            
              6
            
             f.close()
          
            
              1
            
            
              #
            
            
               追加
            
            
              2
            
             f = open(
            
              "
            
            
              a.txt
            
            
              "
            
            , mode=
            
              "
            
            
              a
            
            
              "
            
            , encoding=
            
              "
            
            
              utf-8
            
            
              "
            
            
              )

            
            
              3
            
             f.write(
            
              "
            
            
              ddd
            
            
              "
            
            
              )

            
            
              4
            
            
              f.flush()

            
            
              5
            
             f.close()
          
            
               1
            
            
              #
            
            
               r+ 默認模式指針在文件的開頭
            
            
               2
            
            
              #
            
            
               f = open("老師點名", mode="r+", encoding="utf-8")
            
            
               3
            
            
              #
            
            
               s = f.read()
            
            
               4
            
            
              #
            
            
               print(s)
            
            
               5
            
            
              #
            
            
               f.write("周杰倫")
            
            
               6
            
            
              #
            
            
               f.close()
            
            
               7
            
            
              #
            
            
               神坑
            
            
               8
            
             f = open(
            
              "
            
            
              精品
            
            
              "
            
            , mode=
            
              "
            
            
              r+
            
            
              "
            
            , encoding=
            
              "
            
            
              utf-8
            
            
              "
            
            
              )

            
            
               9
            
             s = f.read(3)  
            
              #
            
            
               讀3個字符
            
            
              10
            
            
              #
            
            
               不管你前面讀了幾個,后面去寫都是在末尾
            
            
              11
            
             f.write(
            
              "
            
            
              aabbcc
            
            
              "
            
            )  
            
              #
            
            
               沒有任何操作之前進行寫,在開頭寫,如果讀取了一些內容后再寫,則是在最后
            
            
              12
            
            
              f.flush()

            
            
              13
            
             f.close()
          

文件內的光標移動

            
               1
            
             一: read(3
            
              ):

            
            
               2
            
               1
            
              . 文件打開方式為文本模式時,代表讀取3個字符

            
            
               3
            
               2
            
              . 文件打開方式為b模式時,代表讀取3個字節

            
            
               4
            
            
              二: 其余的文件內光標移動都是以字節為單位如seek,tell,truncate

            
            
               5
            
            
                  seek(offset[, whence])

            
            
               6
            
                     offset --
            
               開始的偏移量,也就是代表需要移動偏移的字節數,如果是負數表示從倒數第幾位開始

            
            
               7
            
                     whence:可選,默認值為 0。給 offset 定義一個參數,表示要從哪個位置開始偏移;0 代表從文件開頭開始算起,1 代表從當前位置開始算起,2
            
               代表從文件末尾算起。

            
            
               8
            
            
               9
            
            
              10
            
            
              注意:

            
            
              11
            
               1. seek有三種移動方式0,1,2
            
              ,其中1和2必須在b模式下進行,但無論哪種模式,都是以bytes為單位移動的

            
            
              12
            
               2. truncate是截斷文件,所以文件的打開方式必須可寫,但是不能用w或w+等方式打開,因為那樣直接清空文件了,所以truncate要在r+或a或a+
            
              等模式下測試效果 

            
            
              13
            
          

?

            
               1
            
            
              #
            
            
              !/usr/bin/python3
            
            
               2
            
            
               3
            
            
              #
            
            
               打開文件
            
            
               4
            
             fo = open(
            
              "
            
            
              runoob.txt
            
            
              "
            
            , 
            
              "
            
            
              r+
            
            
              "
            
            
              )

            
            
               5
            
            
              print
            
             (
            
              "
            
            
              文件名為: 
            
            
              "
            
            
              , fo.name)

            
            
               6
            
            
               7
            
             line =
            
               fo.readline()

            
            
               8
            
            
              print
            
             (
            
              "
            
            
              讀取的數據為: %s
            
            
              "
            
             %
            
               (line))

            
            
               9
            
            
              10
            
            
              #
            
            
               重新設置文件讀取指針到開頭
            
            
              11
            
            
              fo.seek(0, 0)

            
            
              12
            
             line =
            
               fo.readline()

            
            
              13
            
            
              print
            
             (
            
              "
            
            
              讀取的數據為: %s
            
            
              "
            
             %
            
               (line))

            
            
              14
            
            
              15
            
            
              16
            
            
              #
            
            
               關閉文件
            
            
              17
            
             fo.close()
          

2.3?with操作

              
                1
              
              
                 為了避免打開文件后忘記關閉,可以通過管理上下文,即:

              
              
                2
              
                 with open(
              
                '
              
              
                log
              
              
                '
              
              ,
              
                '
              
              
                r
              
              
                '
              
              
                ) as f:

              
              
                3
              
              
                如此方式,當with代碼塊執行完畢時,內部會自動關閉并釋放文件資源。

              
              
                4
              
              
                5
              
               在Python 2.7
              
                 后,with又支持同時對多個文件的上下文進行管理即:

              
              
                6
              
               with open(
              
                '
              
              
                log1
              
              
                '
              
              ) as obj1, open(
              
                '
              
              
                log2
              
              
                '
              
              ) as obj2:
            
              
                1
              
               with open(
              
                "
              
              
                a.txt
              
              
                "
              
              , mode=
              
                "
              
              
                r
              
              
                "
              
              , encoding=
              
                "
              
              
                utf-8
              
              
                "
              
              
                ) as f:

              
              
                2
              
                   data =
              
                 f.read()

              
              
                3
              
              
                print
              
              (data)
            
                
                  #
                
                
                   提示輸入文件
                
                
oldFileName = input(
                
                  "
                
                
                  請輸入要拷貝的文件名字:
                
                
                  "
                
                
                  )


                
                
                  #
                
                
                   以讀的方式打開文件
                
                
oldFile = open(oldFileName,
                
                  '
                
                
                  rb
                
                
                  '
                
                
                  )


                
                
                  #
                
                
                   提取文件的后綴
                
                
fileFlagNum = oldFileName.rfind(
                
                  '
                
                
                  .
                
                
                  '
                
                
                  )

                
                
                  if
                
                 fileFlagNum >
                
                   0:
    fileFlag 
                
                =
                
                   oldFileName[fileFlagNum:]


                
                
                  #
                
                
                   組織新的文件名字
                
                
newFileName = oldFileName[:fileFlagNum] + 
                
                  '
                
                
                  [復件]
                
                
                  '
                
                 +
                
                   fileFlag


                
                
                  #
                
                
                   創建新文件
                
                
newFile = open(newFileName, 
                
                  '
                
                
                  wb
                
                
                  '
                
                
                  )


                
                
                  #
                
                
                   把舊文件中的數據,一行一行的進行復制到新文件中
                
                
                  for
                
                 lineContent 
                
                  in
                
                
                   oldFile.readlines():
    newFile.write(lineContent)


                
                
                  #
                
                
                   關閉文件
                
                
                  oldFile.close()
newFile.close()
                
              
文件備份

2.4?文件的相關操作

              
                 1
              
              
                import
              
              
                 os

              
              
                 2
              
              
                 3
              
              
                #
              
              
                 文件重命名
              
              
                 4
              
               os.rename(
              
                "
              
              
                畢業論文.txt
              
              
                "
              
              , 
              
                "
              
              
                畢業論文-最終版.txt
              
              
                "
              
              
                )

              
              
                 5
              
              
                 6
              
              
                #
              
              
                 刪除文件
              
              
                 7
              
               os.remove(
              
                "
              
              
                畢業論文.txt
              
              
                "
              
              
                )

              
              
                 8
              
              
                 9
              
              
                #
              
              
                 創建文件夾
              
              
                10
              
               os.mkdir(
              
                "
              
              
                abc
              
              
                "
              
              
                )

              
              
                11
              
              
                12
              
              
                #
              
              
                 獲取當前目錄
              
              
                13
              
              
                os.getcwd()

              
              
                14
              
              
                15
              
              
                #
              
              
                 改變默認目錄
              
              
                16
              
               os.chdir(
              
                "
              
              
                ../
              
              
                "
              
              
                )

              
              
                17
              
              
                18
              
              
                #
              
              
                 獲取目錄列表
              
              
                19
              
               os.listdir(
              
                "
              
              
                ./
              
              
                "
              
              
                )

              
              
                20
              
              
                21
              
              
                #
              
              
                 刪除文件夾
              
              
                22
              
               os.rmdir(
              
                "
              
              
                abc
              
              
                "
              
              )
            
                
                  #
                
                
                   創建新文件,把修改后的文件寫入新文件,刪除老文件,再重命名新文件
                
                
                  import
                
                
                   os

with open(
                
                
                  "
                
                
                  吃的
                
                
                  "
                
                , mode=
                
                  "
                
                
                  r
                
                
                  "
                
                , encoding=
                
                  "
                
                
                  utf-8
                
                
                  "
                
                
                  ) as f1, \
        open(
                
                
                  "
                
                
                  吃的_副本
                
                
                  "
                
                , mode=
                
                  "
                
                
                  w
                
                
                  "
                
                , encoding=
                
                  "
                
                
                  utf-8
                
                
                  "
                
                
                  ) as f2:
    
                
                
                  for
                
                 line 
                
                  in
                
                
                   f1:
        new_line 
                
                = line.replace(
                
                  "
                
                
                
                  "
                
                , 
                
                  "
                
                
                
                  "
                
                
                  )
        f2.write(new_line)


os.remove(
                
                
                  "
                
                
                  吃的
                
                
                  "
                
                )     
                
                  #
                
                
                   刪除文件
                
                
os.rename(
                
                  "
                
                
                  吃的_副本
                
                
                  "
                
                , 
                
                  "
                
                
                  吃的
                
                
                  "
                
                )    
                
                  #
                
                
                   重命名文件
                
              
修改文件內容
                
                  #
                
                
                  coding=utf-8
                
                
                  
#
                
                
                   批量在文件名前加前綴
                
                
                  import
                
                
                   os

funFlag 
                
                = 1 
                
                  #
                
                
                   1表示添加標志  2表示刪除標志
                
                
folderName = 
                
                  '
                
                
                  ./renameDir/
                
                
                  '
                
                
                  #
                
                
                   獲取指定路徑的所有文件名字
                
                
dirList =
                
                   os.listdir(folderName)


                
                
                  #
                
                
                   遍歷輸出所有文件名字
                
                
                  for
                
                 name 
                
                  in
                
                
                   dirList:
    
                
                
                  print
                
                
                   name

    
                
                
                  if
                
                 funFlag == 1
                
                  :
        newName 
                
                = 
                
                  '
                
                
                  [東哥出品]-
                
                
                  '
                
                 +
                
                   name
    
                
                
                  elif
                
                 funFlag == 2
                
                  :
        num 
                
                = len(
                
                  '
                
                
                  [東哥出品]-
                
                
                  '
                
                
                  )
        newName 
                
                =
                
                   name[num:]
    
                
                
                  print
                
                
                   newName

    os.rename(folderName
                
                +name, folderName+newName)
              
批量修改文件名
?

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 成人免费毛片网站 | 亚洲精品在线视频观看 | 古装三级在线观看 | 67194国产精品免费观看 | 中国一级特黄真人毛片 | 污污的网站在线观看 | 日本簧片在线观看 | 欧美日韩视频网站 | 看片亚洲 | 欧美国产成人一区二区三区 | 成人在线视频免费观看 | 日韩精品一区二区在线观看 | 成在线视频 | 久久久久亚洲精品中文字幕 | 色婷婷综合在线 | 性欧美精品久久久久久久 | 99热中文 | a视频在线播放 | 99青草青草久热精品视频 | 亚洲国产精品二区久久 | 亚洲自拍偷拍色图 | 天天插天天干 | 久久亚洲精品国产精品婷婷 | 久久精品av麻豆的观看方式 | 亚洲啊v在线观看 | 欧美高清69hd | 久久久久国产 | 亚洲欧洲精品成人久久奇米网 | 激情小说综合 | 成人国产精品 | 毛片基地看看成人免费 | 99pao成人国产永久免费视频 | 日韩精品一区二区三区中文3d | 久草天堂| 日本高清不卡视频 | 成人三级视频 | 午夜精品久久久久久99热软件 | 成人在线视频在线观看 | 精品亚洲欧美高清不卡高清 | 亚洲精品国精品久久99热 | 亚洲码欧美码一区二区三区 |