檔案讀寫基本操作

2021-10-10 15:01:57 字數 4237 閱讀 1691

```python

# author:pengl

#以下面檔案『yesterday.txt』為例進行檔案讀寫的練習

'''oh, yesterday when i was young

噢 昨日當我年少輕狂

so many, many songs were waiting to be sung

有那麼那麼多甜美的曲兒等我歌唱

so many wild pleasures lay in store for me

有那麼多肆意的快樂等我享受

and so much pain my eyes refused to see

還有那麼多痛苦 我的雙眼卻視而不見

there are so many songs in me that won't be sung

我有太多歌曲永遠不會被唱起

i feel the bitter taste of tears upon my tongue

我嘗到了舌尖淚水的苦澀滋味

the time has come for me to pay for yesterday

終於到了付出代價的時間 為了昨日

when i was young

當我年少輕狂

'''# data = open('yesterday.txt',encoding='utf-8').read() #開啟並讀取資料,window預設dbk編碼,要轉為utf-8

# f = open('yesterday.txt',encoding='utf-8') #拿到檔案控制代碼,繼而開始檔案的相關操作

#f = open('yesterday.txt',encoding='utf-8',mode='r') #mode不填預設為'r'

# f = open('yesterday.txt',encoding='utf-8',mode='w') #'w'寫操作,如果檔案不存在則建立,如果存在則先清空,慎用!!!

# data = f.write('when i was young...') #此時yest檔案裡只有這一句,此前的已被清空;'w'模式開啟無法再用f.read讀,只能從檔案檢視

# data = f.write('\nwhen i was old...\n') #這種模式也是不能read,只能從檔案裡檢視資料

#print(f.readline()) #列印1行

# for i in range(5):

# print(f.readline()) #列印前5行

#print(f.readlines()) #列印所有元素為列**式

# for line in f.readlines():

# print(line.strip()) #如此列印所有元素,如果不加strip()每行結束有換行

# for index,line in enumerate(f.readlines()):

# if index == 9:

# print('------我是分割線--------')

# continue

# print(line.strip()) #此組**實現不列印第9行,該行輸出分割線,特點readlines是將所有資料都一次性讀到記憶體,只適用於資料較小的情況

# count = 0

# for line in f:

# if count == 9:

# print('------我是分割線--------')

# count += 1

# print(line.strip()) #此組**高效,每次讀一條資料到記憶體,讀完釋放掉,建議採用

# count += 1

# print(f.tell()) #列印指標當前的位置(按字元)

# print(f.readline())

# print(f.tell()) #列印一行後當前指標的位置

# print(f.read(5)) #列印5個字元

# print(f.tell()) #f.tell()必然是輸出為5

# f.seek(0) #指標回到0,seek可以回到任意位置

# print(f.readline()) #從0指標開始讀、如果不seek繼續讀,只會在前面讀取的基礎上繼續

#寫資料,不是逐條而是填滿快取buffer的大小之後一次性的寫入硬碟,此時使用flush會實時生效逐條寫硬碟

#進度條程式:

# import time,sys

# for i in range(20):

# sys.stdout.write('#') #標準輸入,到螢幕,不同於print每次列印都換行

# sys.stdout.flush() #不需要填滿buffer後再寫入,而是實時寫入

# time.sleep(0.1)

# f = open('yesterday.txt','a',encoding='utf-8')

# f.seek(10)

# f.truncate(20) #截斷多少個字元,無論你seek到什麼位置,都是從0開始截斷

# f = open('yesterday.txt','r+',encoding='utf-8') #讀寫

# print(f.tell())

# print(f.readline())

# print(f.readline())

# f.write('--------diao-------') #觀察檔案發現沒有寫在第二行後面,而是寫在最後

# f = open('yesterday.txt','w+',encoding='utf-8') #寫讀,先建立檔案,再寫

# f.write('--------diao-------\n')

# f.write('--------diao-------\n')

# f.write('--------diao-------\n')

# f.seek(10)

# f.readline()

# f.write('should be the second line\n') #觀察檔案發現也是追加到檔案的最後,無法實現中間修改。用處不大

#f = open('yesterday.txt','a+',encoding='utf-8') #追加讀寫

# f = open('yesterday.txt','wb')

# f.write('hello,binary\n'.encode()) #寫二進位制,注意要encode編碼轉為二進位制才可

# f.close()

# f = open('yesterday.txt','r',encoding='utf-8') #通過生成乙個新的檔案,實現檔案的修改,replace

# f_new = open('yesterday2.txt','w',encoding='utf-8')

# for line in f:

# if '我嘗到了舌尖淚水的苦澀滋味' in line:

# line = line.replace('我嘗到了舌尖淚水的苦澀滋味','我等到了幸福來敲門')

# f_new.write(line)

# f.close()

# f_new.close()

# import sys #這種方式可以通過傳引數進行修改

# find_str = sys.ar**[1]

# replace_str = sys.ar**[2]

# for line in f:

# if find_str in line:

# line = line.replace(find_str,replace_str)

# f_new.write(line)

# f.close()

# f_new.close()

# with open("yesterday2",'r',encoding='utf8') as f:

# for line in f:

# print(line)

# with操作檔案讀寫,不需要關閉操作

檔案操作 讀寫檔案

對檔案的讀寫操作應該是最重要的檔案操作,system.io命名空間提供了諸多檔案讀寫操作類,對檔案內容進行操作常見有3種方式 文字模式 二進位制模式以及非同步模式。1 文字模式 streamreader 和streamwriter類提供了按文字模式讀寫資料的方法。1.1 streamreader 類...

讀寫檔案操作

匯入領導簡歷資訊 return public string leaderresumeimport throws ioexceptionelse if fr null fr.close if flag else fw.close string sjson outputclient sjson retu...

檔案讀寫操作

函式原型 file fopen const char filename,const char mode 返回值 檔案順利開啟後,指向該流的檔案指標就會被返回。如果檔案開啟失敗則返回null,並把錯誤 存在errno中 引數 mode 說明 r read,已唯讀方式開啟檔案,檔案必須存在 w writ...