文件操做

1,文件操做的函數
   f= open(文件名(路徑),mode="模式(r\w\a\r+\b)",encoding="字符集(GBK\UTF-8)")函數

  content = f.read() \ write()spa

  print(content) ip

  f.close()

    文件路徑:
        1,絕對路徑:從磁盤的根目錄找  或者  從互聯網上
        2,相對路徑:至關於當前程序所在的文件夾   ../上一層文件夾
  咱們更推薦你們使用相對路徑. 由於在咱們把程序拷貝給別人使用的時候. 直接把項目拷貝走 就能運行. 可是若是用絕對路徑. 那還須要拷貝外部的文件.

2,模式  (r, w, a, r+, b 經常使用)內存

 r 只讀it

  1.read()  將文件中的內容所有讀取出來. 弊端: 佔內存. 若是文件過大.容易致使內存崩潰
  2.read(n) 讀取n個字符. 須要注意的是. 若是再次讀取. 那麼會在當前位置繼續去讀而不是從頭讀, 若是使用的是rb模式. 則讀取出來的是n個字節
  3.readline() 一次讀取⼀行數據, 注意: readline()結尾, 注意每次讀取出來的數據都會有一 個\n 因此呢. 須要咱們使用strip()方法來去掉\n或者空格
  4.readlines()將每⼀行造成⼀個元素, 放到⼀個列表中. 將全部的內容都讀取出來. 因此也是容易出現內存崩潰的問題.不推薦class

      5. 循環讀取. 這種⽅式是組好的. 每次讀取一⾏內容.不會產生內存溢出的問題import

  注意: 讀取完的⽂件句柄⼀定要關閉   f.close()

    w 模式:只寫
        帶w的,只要你操做了,第一次操做就會清空原文件數據所有清空增長寫的內容,後面寫不會清空
        若是文件不存在就建立文件

    a 模式:追加
        寫的時候,換行須要手動控制

    b:處理非文本文件——wb rb ab(bytes類型)若是處理的是非文本文件,mode裏若是有b,encoding就不能給了

    +:
        r+:讀寫coding

   最好用的讀寫同時存在的模式
            r+的一個坑:不論你讀取了多少內容,不管光標在哪,寫入的時候都是在結尾寫入

        w+:寫讀互聯網

    清空內容,寫入

        a+:寫讀追加寫讀

3, 經常使用的操做
    1,光標(seek) 移動的單位是byte. 因此若是是UTF-8的中文部分要 是3的倍數
        f.seek(0)——將光標移動到開頭
        f.seek(0,2)——將光標移動到末尾  seek的第二個參數表⽰的是從哪一個位置進⾏偏移, 默認是0,  表示開頭, 1表示當前位置, 2表示結尾
    2,tell()——拿到光標的位置
    3,truncate()——截斷內容
        從文件開頭截斷到光標位置
        若是給參數,從頭截斷到參數位置循環

深坑請注意: 在r+模式下. 若是讀取了內容. 不論讀取內容多少. 光標顯⽰的是多少. 再寫入 或者操做⽂件的時候都是在結尾進⾏的操做. 因此若是想作截斷操做. 記住了. 要先挪動光標. 挪動到你想要截斷的位置. 而後再進⾏截斷 關於truncate(n), 若是給出了n. 則從開頭進行截斷, 若是不給n, 則從當前位置截斷. 後面 的內容將會被刪除


    4,修改文件
        1,引入os模塊 import os
        2,打開目標文件,r
        3,打開副本文件,w
        4,從r中讀取內容進行修改,寫入副本中
        5,刪除源文件
        6,重命名副本

相關文章
相關標籤/搜索