天天看點

八、檔案的處理

f = open ('‪H:\\呵呵.txt',encoding='utf-8',mode='r')
s = f.read
print(s)
f.close
f:變量,f_obj,file,f_handler,...檔案句柄。
open 是windows的系統功能,
windows預設編碼方式:gbk,linux預設編碼方式utf-8。
f.close()

流程:打開一個檔案,産生一個檔案句柄,
       對檔案句柄進行操作,關閉檔案。      

讀的幾種方式

1.    f = open('H:\\呵呵.txt',encoding = 'utf-8','r')

s=f.read

print(s)

f.close()

這種是全部讀出來

2.   f = oepn('H:\\呵呵.txt',endoding='utf-8','r')

s = f.readline

f.close()         一行一行的讀   每print一次就列印一行

3.   f = open('H:\\呵呵.txt',encoding='utf-8' , 'r')

s = f.readlines

print(s)         把檔案的每一行作為一個元素(包括換行符)放到一個清單中  

4.   f = open('H:\\呵呵.txt',encoding = 'utf-8','r')

s = f.read(int)   (參數填數字 )

 print(S)            列印字元的個數

     f = open('H:\\呵呵.txt','rb')

     s = f.read(int)  (參數填數字 )  

    print(S)            列印位元組的個數

f.close()         

5.   f = open('H:\\呵呵.txt',encoding = 'utf-8','r')

fpr i in f:

  print(i.strip())     循環列印每一行  

在讀非文字的檔案時候用rb

   f = open('H:\\呵呵.txt','rb')

  s =  f.read()

   print(s)

寫的方式

如果我沒有這個檔案夾就建立這個檔案夾寫入内容,如果有這個檔案夾 就清空檔案内容  然後再添加

1.    f = open('H:\\呵呵.txt',encoding = 'utf-8','w')

       f.write('kkkk')

       print(f)  

      f.close()

 寫入byte資料類型的内容

  f = open('H:\\呵呵.txt','wb')

       f.write('kkkk'.encoding('utf-8'))

     print(f)      

    f.close()

a     有檔案就追加内容 沒有檔案就建立檔案加入内容

  f = open('H:\\呵呵.txt',encoding = 'utf-8','a')

r+   先讀後寫  一定要先讀後寫 

  f = open('H:\\呵呵.txt',encoding = 'utf-8','r+')

s = f.read()

 f.write('kkkk')

  print(f)  

  f.close()

w+    先寫後讀

f = open('H:\\呵呵.txt',encoding = 'utf-8','w+')

f.write('kklkk')

print(f.tell())   查找光标在什麼位置

f.seek(0)         參數填入數字 然後把光标調整到想要的位置

print(s) 

f.close()   

a+    追加讀 可以一直先寫入再讀出來

f = open('H:\\呵呵.txt',encoding = 'utf-8','a+')

f.seek(0)           

print(s)        

其他方法

判斷是否可讀  可寫列印的是bool值

print(f.writable())

print(f.readable()

f.truncate()     參數填數字   按照位元組個數來截取檔案内容

系統中修改檔案的過程

1,将源檔案讀取到記憶體中

2,将原檔案的内容修改成新内容

3,将新字元串寫入新檔案上

4,将原檔案删除

5,将新檔案的名字改成原檔案名

import os
with open ('log',encoding='utf-8','r') as f1,\
 open('bak_log',encoding='utf-8','w') as f2:
    content = fi.read()
    new_content = content.replace('sb','alex')
    f2.wriite(new_content)
os.remove('log')
os.rename('bak_log','log')
      

  

繼續閱讀