Python學習之==>檔案操作

來源:互聯網
上載者:User

標籤:imp   移動檔案   move   控制代碼   檔案的   讀寫   lin   字元   cat   

檔案基本操作:

m = open(‘words‘,encoding=‘utf-8‘)#開啟檔案(python預設字元集為utf-8,windows為gbk),不輸入模式預設為r模式
print(m.read()) #讀檔案
print(m.readline()) #讀取第一行
print(m.readlines()) #把檔案的每一行放到一個list裡面

開啟檔案的模式:

r,唯讀模式(預設)【不可寫;檔案不存在,會報錯】
w,唯寫模式【不可讀;不存在則建立;存在則刪除內容;】
a,追加模式【不可讀; 不存在則建立;存在則只追加內容;】
r+,讀寫入模式【可讀、可寫;可追加,如果開啟的檔案不存在的話,會報錯】
w+,寫讀模式【使用w+的話,已經存在的檔案內容會被清空,可以讀到已經寫的檔案內容】
a+,追加讀寫入模式【不存在則建立;存在則只追加內容;】

檔案操作方法:

f = open(‘file.txt‘,‘r+‘,encoding=‘utf-8‘)  # encoding參數可以指定檔案的編碼
f.readline() # 讀一行
f.readable() # 判斷檔案是否可讀
f.writable() # 判斷檔案是否可寫
f.encoding # 列印檔案的編碼
f.read() # 讀取所有內容,大檔案時不要用,因為會把檔案內容都讀到記憶體中,記憶體不夠的話,會把記憶體撐爆
f.readlines() # 讀取所有檔案內容,返回一個list,元素是每行的資料,大檔案時不要用,原因和上面一樣
f.tell() # 擷取當前檔案的指標指向
f.seek(0) # 把當前檔案指標指向哪
f.write(‘愛情認證‘) # 寫入內容
f.fulsh() # 寫入檔案後,立即從記憶體中把資料寫到磁碟中
f.truncate() # 清空檔案內容
f.writelines([‘愛情認證‘ ,‘孫燕姿‘]) # 將一個列表寫入檔案中
f.close() #關閉檔案

大檔案讀取高效操作方法:

用上面的read()和readlines()方法操作檔案的話,會先把檔案所有內容讀到記憶體中,這樣的話,記憶體資料一多,非常卡,高效的操作,就是讀一行操作一行,讀過的內容就從記憶體中釋放了,如下:

f = open(‘file.txt‘)
for line in f:
print(line)
# 這樣的話,line就是每行檔案的內容,讀完一行的話,就會釋放一行的記憶體

檔案指標:

# 用來記錄檔案讀到哪裡
m = open(‘name‘,‘a+‘,encoding=‘utf-8‘)# a模式的檔案指標是在末尾的
m.write(‘呃呃呃‘)
m.seek(0) #移動檔案指標到最前面
print(m.read())
m.write(‘呵呵呵‘) #移動完檔案指標之後,從前面開始讀,但寫的時候還是在檔案末尾寫
m.seek(0)
print(m.read())

自動關檔案:

在操作檔案的時候,經常會忘了關閉檔案。可以使用with,它會在使用完這個檔案控制代碼之後,自動關閉該檔案,使用方式如下:

with open(‘file.txt‘, ‘r‘) as f:# 開啟一個檔案,把這個檔案的控制代碼付給f
for line in f:
print(line)
with open(‘file.txt‘) as fr,open(‘file_bak‘, ‘w‘) as fw:# 這個是多檔案的操作,開啟兩個檔案,fr是讀file.txt,fw是建立一個file_bak檔案
for line in fr:# 迴圈file.txt中的每一行
fw.write(line)# 寫到file_bak檔案中

修改檔案:

修改檔案有兩種方式:

       1、一種是把檔案的全部內容都讀到記憶體中,然後把原有的檔案內容清空,重新寫新的內容。

       2、第二種是把修改後的檔案內容寫到一個新的檔案中。

第一種方式:

with open(‘file.txt‘,‘r+‘) as fr:
res = fr.read()
new_res = res.replace(‘我‘ ,‘me‘)
fr.truncate()
fr.write(new_res)

第二種方式:

# 這個是多檔案的操作,開啟兩個檔案,fr是讀file.txt,fw是建立一個file_bak檔案
import os
with open(‘file‘) as fr,open(‘new_file‘,‘w‘) as fw:
for line in fr: # 迴圈file.txt中的每一行
new_line = line.replace(‘花‘,‘flower‘)
fw.write(new_line) # 寫到file_bak檔案中
os.remove(‘file‘) # 刪除檔案
os.rename(‘new_file‘,‘file‘) # 改名

f.write()和f.writelines

# f.write()只能寫字串
a = [‘abc\n‘,‘123\n‘,‘[email protected]#‘]
f = open(‘name‘,‘w‘)
for i in a:
f.write(i)

# f.writelines()會迴圈把list當中的元素寫入檔案
a = [‘abc\n‘,‘123\n‘,‘[email protected]#‘]
f = open(‘name‘,‘w‘)
f.writelines(a)

Python學習之==>檔案操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.