007_文件的簡單操做

1,文件操做python

  1.1,文件路徑:
  • 絕對路徑:即從根目錄開始,從盤符開始(D:\PycharmProjects\S9\Class\day008\文件操做練習)
  • 相對路徑:當前路徑下的(即同一文件下)(文件操做練習)
  1.2,編碼方式:utf-8 gbk。。。
  1.3,操做方式:只讀,只寫,追加,讀寫,寫讀。。。
  1.4,以什麼編碼的方式儲存的文件,就以什麼編碼打開進行操做 
  1.5,bytes類型指字節型字符串utf-8,gbk,ascii等,Unicode是字符串型

2,文件只讀(r模式)
  2.1,絕對路徑
f = open('D:\PycharmProjects\S9\Class\day008\文件操做練習',mode='r',encoding='utf-8')
content =  f.read()        #文件內容:文件操做
print(content)             #>>> 文件操做
f.close()
  對於絕對路徑,由於  \  在程序中有轉義的做用,有時會出現轉義的狀況(例:\t)因此要使用 \\ (例:\\t)以取消轉義的做用
  2.2,相對路徑
f = open('文件操做練習',mode='r',encoding='utf-8')
content = f.read()        #文件內容:文件操做
print(content)            #>>> 文件操做
f.close()
3,文件只讀(rb模式,即只讀,bytes類型)各類操做模式均可加小寫b,變成對應的bytes類型的模式)
  • rb模式,將內容用原編碼方式以對應的字節碼形式讀取出來
  • rb模式下不用代表編碼方式
f = open('文件操做練習',mode='rb')       #文件內容:文件操做
content = f.read()
print(content)      #>>>b'\xe6\x96\x87\xe4\xbb\xb6\xe6\x93\x8d\xe4\xbd\x9c'
f.close()
4,文件只寫(w模式)
  • 對於寫:沒有此文件夾就會建立文件
  • 寫,先將源文件的內容所有清除,,而後寫入新的內容
f = open('文件操做練習',mode='w',encoding='utf-8')   #文件內容:文件操做
f.write('寫入的內容')                                #文件內容:寫入的內容
f.close()
5,文件只寫(wb模式)
  • wb模式,將內容先編碼成字節碼
f = open('文件操做練習',mode='wb')       #文件內容:文件操做
f.write('寫入的內容wb'.encode('utf-8'))  #文件內容:寫入的內容wb
f.close()
6,文件追加(a模式)(在原內容後添加新內容
f = open('文件操做練習',mode='a',encoding='utf-8')     #文件內容:文件操做
f.write('追加內容')                                    #文件內容:文件操做追加內容
f.close()
7,文件追加(ab模式
f = open('文件操做練習',mode='ab')       #文件內容:文件操做
f.write('追加ab'.encode('utf-8'))       #文件內容:文件操做追加ab
f.close()
8,文件讀寫(r+模式)
  8.1,先讀取原內容,再將新內容添加到原內容以後
f = open('文件操做練習',mode='r+',encoding='utf-8')      #文件內容:文件操做
print(f.read())                                         #>>>文件操做
f.write('讀寫模式')                                      #文件內容:文件操做讀寫模式
f.close()
  8.2,先寫後讀不行
     r+模式下先寫後讀,新內容會將原內容從頭開始依次覆蓋,然會再將剩餘的原內容讀出
f = open('文件操做練習',mode='r+',encoding='utf-8')       #文件內容:文件操做
f.write('讀寫')                                          #文件內容:讀寫操做
print(f.read())                                          #>>>操做
f.close()
9,文件讀寫(r+b模式)
f = open('文件操做練習',mode='r+b')          #文件內容:文件操做
print(f.read())                             #>>>b'\xe8\xaf\xbb\xe5\x86\x99\xe6\x93\x8d\xe4\xbd\x9c'
f.write('文件讀寫r+b模式'.encode('utf-8'))   #文件內容:文件操做文件讀寫r+b模式
f.close()
10,文件寫讀(w+模式)
f = open('文件操做練習',mode='w+',encoding='utf-8')   #文件內容:文件操做
f.write('寫讀模式')                                  #文件內容:寫讀模式   #寫入會將原文件刪除再寫入
f.seek(0)                                           #由於寫完後光標是在內容後,因此將光標調至前面
print(f.read())                                     #>>>寫讀模式
f.close()
11,追加且可讀模式(a+模式)
f = open('文件操做練習',mode='a+',encoding='utf-8')    #文件內容:文件操做
f.write('a+模式')                                     #文件內容:文件操做a+模式
f.seek(0)
print(f.read())                                       #>>>文件操做a+模式
f.close()
12,讀操做詳解
f = open('文件操做練習',mode='r+',encoding='utf-8')   #文件內容:文件操做
content = f.read(3)     #讀操做能夠設定從光標位置讀幾個字符
print(content)          #>>>文件操
f.close()
13,seek() 按照字節定位光標的位置
f = open('文件操做練習',mode='r+',encoding='utf-8')   #文件內容:文件操做
f.seek(3)               #utf-8編碼的漢字是3字節,因此光標在‘文’的後面,  #此時不是3的倍數時會報錯或亂碼
content = f.read()
print(content)          #>>>件操做
f.close()
14,f.tell() 告訴你光標的位置
能夠再用seek()進行追加,可用此方法進行斷點續接
f = open('文件操做練習',mode='r+',encoding='utf-8')   #文件內容:文件操做
print(f.tell())         #>>>0
f.close()

f = open('文件操做練習',mode='a+',encoding='utf-8')   #文件內容:文件操做
f.write('舉例')                                       #文件內容:文件操做舉例
count = f.tell()
f.seek(count-9)
print(f.read(2))                                      >>>做舉
f.close()
15,文件按行讀
f = open('文件操做練習',mode='r+',encoding='utf-8')
line = f.readline()     #每次只讀取一行    #內存中只有一行
print(line)             #>>>文件操做
line = f.readline()
print(line)             #>>>一行
f.close()

  

f = open('文件操做練習',mode='r+',encoding='utf-8')
line = f.readlines()    #每一行當成列表中的一個元素,添加到list中     #仍是全讀,將全部讀到內存中
print(line)             #>>>['文件操做\n', '二行\n', '三行']
f.close()

  

f = open('文件操做練習',mode='r+',encoding='utf-8')
for line in f:            #一行一行的讀
    print(line)
f.close()
16,文件是否可讀
f = open('文件操做練習',mode='r+',encoding='utf-8')
print(f.readable())     #>>>True
f.close()
17,截取內容
  • 截取源文件的內容,將截取的內容保存,其餘的刪除
f = open('文件操做練習',mode='r+',encoding='utf-8')    #文件內容:文件操做
f.truncate(6)       #參數是字節長度                    #文件內容:文件
f.close()

 18,用with方法打開編程

  • 用with方法打開處理文件,不用考慮操做文件後忘記關閉文件的問題,該方式會在操做結束後自動釋放已打開的文件
  • 用with方法能夠一次打開多個文件進行處理,注意:重複用不一樣模式打開同一文件夾時,以最後一個打開爲準
  • python再編程時若是能夠經過加字符‘\’再在下一行繼續寫這一行沒寫完的
with open('文件操做練習',mode='r',encoding='utf-8') as name,\
     open('文件操做練習',mode='w',encoding='utf-8') as name2:      #文件內容:文件操做
     name2.write('name2')         #文件內容:name2
19,修改文件
    文件事實上是不能修改的,所以修改文件的思路:
       將原文件內容一行一行的讀取到內存,查看是否修改,在內存中作修改,
        而後建立一個新的文件,並將內容寫入,而後將源文件刪除,將新文件從新命名
    open()的模式默認是'r'

with open('小護士',encoding='utf-8') as f,\
    open('新小護士',mode='w',encoding='utf-8') as f2:       #打開兩個文件
    for line in f:                                          #一行一行的讀到內存,內存中只有一行
        if '星兒' in line:
            line = line.replace('星兒','阿嬌')              #將須要修改的修改
        f2.write(line)
20,刪除,重命名文件
import os
os.remove('小護士')    #刪除‘小護士’文件
os.rename('新小護士','小護士')     #重命名文件,將‘新小護士’重命名‘小護士’
相關文章
相關標籤/搜索