1. 程式人生 > >python基礎之檔案操作基礎

python基礎之檔案操作基礎

 

Python基礎之檔案操作

 

1、檔案的開啟方式

讀檔案的方式有四種:

  r:只讀

  rb:二進位制讀取

  r+:讀寫,先讀在寫,在檔案游標處接著寫

  r+b:二進位制讀取資料,英文讀取英文,中文轉為二進位制

 

# #檔案操作,開啟一個檔案,讀取檔案內容,返回檔案內容為字串
f = open('info', mode='r', encoding='utf-8')
content = f.read()
print(content, type(content))
f.close()
# #二進位制讀取
f = open('info
', mode='rb') content = f.read() print(content, type(content)) f.close() #讀寫,先讀出內容,再在結尾處寫檔案 f = open('info',mode='r+',encoding='utf-8') print(f.read()) f.write('\n大猛,小孟') f.close() #中文轉為二進位制的資料,英文字母不轉,返回 f = open('info', mode='r+b') print(f.read()) f.write('大猛,小孟'.encode('utf-8')) f.close()

 

寫檔案的方式也有四種:

w ,wb:區別不大

w+ :寫完之後重置游標才能讀取,否則游標在最後,讀取不到內容

w+b:寫的內容需要

f = open('info',mode='w',encoding='utf-8')   
f.write('附近看到類似糾紛')                          
f.close()                                    
#wb                                          
f = open('log',mode='wb')                    
f.write(
'附近看到類似糾紛'.encode('utf-8')) f.close() # w+ w+b寫的內容需要加二進位制形式 f = open('info',mode='w+b') f.write(b'aaa') #f.write('aaa'.encode('utf8'))
f.seek(0) print(f.read()) f.close() 

 

追加方式:

 

f = open('info',mode='a',encoding='utf8')
f.write('佳琪')
f.close()

 

 注意:讀出來的都是字串即是str型別,

 

2.檔案的其他操作

#read,readline,readlines區別
#一次性讀完,之後for迴圈相當於對所有內容(內容為str)迴圈遍歷
f = open('info',mode='r',encoding='utf8') #['a', 'a', 'a', '佳', '琪', '佳', '琪', '', '1', '2', '3', '3', '3', '3', '3', '3', '3', '3', '', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '', '2', '2', '2', '2', '2', '2', '2', '2', '2', '2']
read_L= []
for line in f.read():
    read_L.append(line.strip())
f.close()
print(len(read_L))
print(read_L)

#只讀一行,之後for迴圈相當於對所有內容(內容為str)迴圈遍歷
f = open('info',mode='r',encoding='utf8')   #['a', 'a', 'a', '佳', '琪', '佳', '琪', '']
readline_L= []
for line in f.readline():
    readline_L.append(line.strip())
f.close()
print(len(readline_L))
print(readline_L)

#每行讀完當一個列表
f = open('info',mode='r',encoding='utf8') #['aaa佳琪佳琪', '1233333333', '1111111111', '2222222222']
readlines_L= []
for line in f.readlines():
    readlines_L.append(line.strip())
f.close()
print(len(readlines_L))
print(readlines_L)

 

修改檔案

with open('info',encoding='utf-8') as f,open('info.bak','w',encoding='utf-8') as f2:
    for line in f:
        if 'aaa' in line:  #班主任:星兒
            line = line.replace('aaa','******')
        #寫檔案
        f2.write(line) #小護士:金老闆

import os
os.remove('info') #刪除檔案
os.rename('info.bak','info')  #重新命名檔案

 

 注意:檔案使用過程中要習慣使用with open()開啟檔案,這樣會自動關閉檔案,而不用輸入f.close(),且只在Python3才有with open()操作,py2不支援這個操作