iT邦幫忙

DAY 29
0

Python初學起步走系列 第 29

[Python初學起步走-Day29] - 檔案讀寫

Python使用open()打開檔案

語法為

 f = open('檔案', '模式')

模式有

r - 讀取(檔案需存在)

w - 新建檔案寫入(檔案可不存在,若存在則清空)

a - 資料附加到舊檔案後面(游標指在EOF)

r+ - 讀取舊資料並寫入(檔案需存在且游標指在開頭)

w+ - 清空檔案內容,新寫入的東西可在讀出(檔案可不存在,會自行新增)

a+ - 資料附加到舊檔案後面(游標指在EOF),可讀取資料

b - 二進位模式

讀取文件內容

f.read(size) - 回傳檔案內容

size為要讀取進來的字串長度,若不填則讀取整份文件

例如

iT邦幫忙鐵人賽是專為IT人舉辦的年度盛事,每年都有數百位IT人一起參與挑戰,大家一起分享技術、經驗與熱情。
隨著iT邦幫忙鐵人在今年邁入第7年,已經有將近千位IT鐵人達成了連續30天發文不中斷的自我挑戰,為IT職涯寫下難忘的記錄。
iT邦幫忙鐵人賽是IT人自我成長的絕佳機會。參加過鐵人賽的IT人都說:藉由連續30天、每天發表一篇文章來強迫自己,把過去一年學到的知識與經驗給整理出來,跟大家分享交流,收獲最多的絕對是自己。
而且,還有最3萬元的高額獎金及數不完的獎品等著你。

#file.py
f = open('news.txt','r')
print(f.read())

f.readline() - 讀取一行,最後面會加上一個 \n

f.readlines() - 傳回一list ,每一行文字最後面會加上一個 \n 為一個list的資料項

寫入檔案內容

語法為

f.write(string) - 寫入檔案,並回傳寫入的string長度

例如

iT邦幫忙鐵人賽是專為IT人舉辦的年度盛事,每年都有數百位IT人一起參與挑戰,大家一起分享技術、經驗與熱情。
隨著iT邦幫忙鐵人在今年邁入第7年,已經有將近千位IT鐵人達成了連續30天發文不中斷的自我挑戰,為IT職涯寫下難忘的記錄。
iT邦幫忙鐵人賽是IT人自我成長的絕佳機會。參加過鐵人賽的IT人都說:藉由連續30天、每天發表一篇文章來強迫自己,把過去一年學到的知識與經驗給整理出來,跟大家分享交流,收獲最多的絕對是自己。
而且,還有最3萬元的高額獎金及數不完的獎品等著你。

f = open('news.txt','a')
f.write('今年iT邦幫忙鐵人賽不僅延續傳統鋼鐵般的精神,更把組別一口氣增加到7組:【MIS 技術】、【開發技術】、【其他技術】、【IT 人生】、【Cloud、Big Data】、【App 開發】及【學生組】等7組\n')

游標位置

檔案讀寫時,游標的位置可以用seek()控制

語法為

f.seek(位移的bit數)

預設從文件的開頭開始計算

可在指定從哪邊開始

f.seek(位移的bit數,0) - 從文件開頭開始
f.seek(位移的bit數,1) - 從目前游標位置開始
f.seek(位移的bit數,2) - 從目前文件結尾開始

當在unicode中操作會遇到錯誤,但可以使用二進制模式去控制游標位置

例如

taipei city

f = open('news.txt','rb+')
f.seek(2)
f.write(b'A')
#taApei city
f.seek(2,1)
f.write(b'B')
#taApeB city
f.seek(-2,2)
f.write(b'C')
#taApeB ciCy

上一篇
[Python初學起步走-Day28] - 物件導向(Object-oriented,OO) - 私有屬性、私有方法
下一篇
[Python初學起步走-Day30] - 除錯(使用pdb)
系列文
Python初學起步走30

1 則留言

0
t8741150
iT邦新手 5 級 ‧ 2017-12-15 09:05:30

謝謝大大 提供這寶貴的經驗
想請教大大 在linux 下 我想要在文字檔內,將特數字串開頭作為依據
在字串尾端加入幾個字,應該如何編寫code呢?
謝謝

我要留言

立即登入留言