1. 程式人生 > >Python讀寫txt文字檔案的操作方法全解析

Python讀寫txt文字檔案的操作方法全解析

一、檔案寫入(慎重,小心別清空原本的檔案)
步驟:開啟 -- 寫入 -- (儲存)關閉
直接的寫入資料是不行的,因為預設開啟的是'r' 只讀模式

使用r+ 模式不會先清空,但是會替換掉原先的檔案,如下面的例子:hello boy! 被替換成hello aay!

path='G:\Python學習/test1.txt'
f=open(path,'r+')
f.write('hello aa!')
f.close()

如何實現不替換?

可以看到,如果在寫之前先讀取一下檔案,再進行寫入,則寫入的資料會新增到檔案末尾而不會替換掉原先的檔案。這是因為指標引起的,r+ 模式的指標預設是在檔案的開頭,如果直接寫入,則會覆蓋原始檔,通過read() 讀取檔案後,指標會移到檔案的末尾,再寫入資料就不會有問題了。這裡也可以使用a 模式

2016626170852899.png (713×317)

檔案物件的方法:
f.readline()   逐行讀取資料

f.next()   逐行讀取資料,和f.readline() 相似,唯一不同的是,f.readline() 讀取到最後如果沒有資料會返回空,而f.next() 沒讀取到資料則會報錯.而 Python3中這個方法已經不再使用,因此會報錯。

f.writelines()   多行寫入

f.seek(偏移量,選項)
(1)選項=0,表示將檔案指標指向從檔案頭部到“偏移量”位元組處
(2)選項=1,表示將檔案指標指向從檔案的當前位置,向後移動“偏移量”位元組
(3)選項=2,表示將檔案指標指向從檔案的尾部,向前移動“偏移量”位元組

偏移量:正數表示向右偏移,負數表示向左偏移

f.flush()    將修改寫入到檔案中(無需關閉檔案)

f.tell()   獲取指標位置

四、內容查詢和替換
1、內容查詢

例項:統計檔案中hello個數
思路:開啟檔案,遍歷檔案內容,通過正則表示式匹配關鍵字,統計匹配個數。

import re
f =open('G:\Python學習/test1.txt')
source = f.read()
f.close()
print(re.findall(r'hello',source))
s = len(re.findall(r'hello',source))
print(s)

#法二:
fp=open('G:\Python學習/test1.txt','r')
count=0

for s in fp.readlines():
    li=re.findall('hello',s)
    if len(li)>0:
        count=count+len(li)
print('you %d 個hello'%count)

2、替換
例項:把test1.txt 中的hello全部換為"hi",並把結果儲存到hello.txt中。

f1=open('G:\Python學習/test1.txt')
f2=open('G:\Python學習/hello.txt','r+')
for s in f1.readlines():
    f2.write(s.replace('hello','hi'))
f1.close()
f2.close()
f2=open('G:\Python學習/hello.txt','r')
f2.readlines()

例項:讀取檔案test.txt內容,去除空行和註釋行後,以行為單位進行排序,並將結果輸出為result.txt。test.txt 的內容如下所示:

#some words
 
Sometimes in life,
You find a special friend;
Someone who changes your life just by being part of it.
Someone who makes you laugh until you can't stop;
Someone who makes you believe that there really is good in the world.
Someone who convinces you that there really is an unlocked door just waiting for you to open it.
This is Forever Friendship.
when you're down,
and the world seems dark and empty,
Your forever friend lifts you up in spirits and makes that dark and empty world
suddenly seem bright and full.
Your forever friend gets you through the hard times,the sad times,and the confused times.
If you turn and walk away,
Your forever friend follows,
If you lose you way,
Your forever friend guides you and cheers you on.
Your forever friend holds your hand and tells you that everything is going to be okay. 

 

f=open('G:\Python學習/test.txt','r')
result=list()
for line in f.readlines():#逐行讀取資料
    line=line.strip()#去掉每行頭尾空白
    if not len(line) or line.startswith('#'):#判斷是否是空行或註釋行
        continue
result.append(line)#儲存        
result.sort()#排序結果
print(result)
f1=open('G:\Python學習/result.txt','w')
f1.write('%s'%'\n'.join(result))

結果如下:

f1=open('G:\Python學習/result.txt','r')
f1.read()