Python學習筆記_1_基礎_6:文件
阿新 • • 發佈:2018-09-04
sleep trunc std yesterday str key readline end lose
一、打開文件
1、打開方式
# r:只讀方式,文件的指針將會放在文件的開頭;若文件不存在則報錯。(這是默認模式)
# w:寫方式,重新創建文件;即不存在就創建,存在則覆蓋
# a:追加方式;不存在創建,存在則追加內容(文件指針將會放在文件的結尾)
# 特殊方式(rb、wb、ab):以二進制格式打開文件,網絡傳輸以及二進制文件(視頻、音頻等,字符串文件也可用二進制形式打開)操作
# +形式:r、w、a、rb、wb、ab均可以使用+形式,在原有形式上增加讀或寫功能。
# 註意
# 讀:可以調整文件指針,讀取不同位置數據。
# 寫:不能修改原有內容,只能重新覆蓋,或者尾部追加。
1 f = open(‘yesterday‘,mode= ‘r+‘,encoding=‘utf-8‘) #文件句柄 2 data = f.read() 3 print(data) 4 5 ‘‘‘ 6 f.write(‘aaaaaaaaaaaaaaaaa‘) #報錯 7 8 f = open(‘test1.txt‘,mode= ‘w‘,encoding=‘utf-8‘) #文件句柄 9 f.write(‘bbbbbb‘) #每次運行均被覆蓋 10 11 #data = f.read() #報錯 12 #print(data) 13 f1 = open(‘test1.txt‘,mode= ‘a‘,encoding=‘utf-8‘) #文件句柄14 f1.write(‘出錯出錯錯錯錯錯錯錯錯‘) #尾部追加 15 16 ‘‘‘
2、打印文件
1 f = open(‘yesterday‘,mode= ‘r‘,encoding=‘utf-8‘) 2 3 #打印行 4 count = 0 5 for line in f: 6 if count == 9: 7 print(‘我是分隔符‘.center(50,‘-‘)) 8 count +=1 9 continue 10 print(line.strip()) 11 count +=1 1213 ‘‘‘ 14 #不建議使用,文件大速度慢,甚至承包內存 15 for index,line in enumerate(f.readlines()): 16 if index == 9: 17 print(‘我是分隔符‘.center(50,‘-‘)) 18 continue 19 print(line.strip()) 20 21 #for i in range(5): 22 # print(f.readline()) 23 ‘‘‘ 24 print()
二、文件操作方法
1、文件句柄信息
1 f = open(‘yesterday‘,mode= ‘r+‘,encoding=‘utf-8‘) 2 3 #文件句柄信息 4 print(‘文件句柄信息‘.center(50,‘-‘)) 5 print(f) 6 print(f.name) #文件名稱 7 print(f.fileno()) #文件內存編號 8 f.flush() #文件刷新,文件修改並不是實時進行,修改信息先保存在緩存中,一定內容後刷新。 9 print( f.isatty() ) #如果文件連接(與終端設備關聯)到tty(類似)設備則返回True,否則為false。
2、文件讀取
1 #文件讀取 2 print(‘文件讀取‘.center(50,‘-‘)) 3 print(‘是否可讀‘,f.readable()) #是否可讀 4 print(‘讀取指定長度內容‘,f.read(10)) #讀取指定長度內容 5 print(‘讀取一行‘,f.readline()) #讀取一行 6 print(type(f.readlines())) #讀取全部內容到一個列表,不建議使用。 7 print(‘是否可調整指針位置‘,f.seekable()) #是否可調整指針位置 8 print(‘獲取指針位置‘,f.tell()) #獲取指針位置 9 print(‘調整指針位置‘,f.seek(0)) 10 print(‘讀取指定長度內容‘,f.read(10)) 11 print(‘獲取指針位置‘,f.tell())
3、文件修改
1 #文件修改 2 ‘‘‘ 3 1234567890 4 abcdefghij 5 ‘‘‘ 6 print(‘文件修改‘.center(50,‘-‘)) 7 f1 = open(‘test1.txt‘,mode= ‘r+‘,encoding=‘utf-8‘) 8 f1.seek(10) 9 #方法用於截斷文件: 10 # 如果指定了可選參數 size,則表示截斷文件為 size 個字符(從頭開始截取)。 11 # 如果沒有指定 size,則從當前位置起截斷;截斷之後 size 後面的所有字符被刪除。 12 print(f1.truncate() ) 13 print(‘是否可寫‘,f1.writable()) 14 f1.write(‘abcdefhijk‘) #寫入數據,在文件末尾 15 f1.write(‘\nList:‘) 16 f1.writelines([‘L‘,‘M‘]) #可以是列表,元組,集合,字典(寫入值) 17 f1.write(‘\nTuple:‘) 18 f1.writelines((‘O‘,‘P‘)) 19 f1.write(‘\nSet:‘) 20 f1.writelines(set([‘O‘,‘P‘])) 21 f1.write(‘\nDictionary:‘) 22 f1.writelines({‘Keys‘:‘Values‘,‘Keys1‘:‘Values1‘}) 23 24 f.close() #文件關閉 25 f1.close()
運行前:
運行結果:
三、flush函數
刷新函數:文件操作並非實時寫入文件,如需實時寫入則要用flush函數。
1 import sys,time 2 3 for i in range(20): 4 sys.stdout.write("#") 5 sys.stdout.flush() 6 time.sleep(0.1) 7 8 print(‘‘) 9 10 for i in range(20): 11 print("#",end=‘‘,flush=‘True‘) 12 time.sleep(0.1)
運行可看出效果。
四、WITH語句(基本,後續完善)
with語句:使用於對資源進行訪問的場合,保證不管處理過程中是否發生錯誤或者異常都會執行規定的__exit__(“清理”)操作,釋放被訪問的資源,比如有文件讀寫後自動關閉、線程中鎖的自動獲取和釋放等。
1 #一行,最好不超過80個字符 2 with open(‘yesterday‘,mode= ‘r‘,encoding=‘utf-8‘) as f ,3 open(‘yesterday‘,mode= ‘r‘,encoding=‘utf-8‘) as f1: 4 for i in f: 5 print(i,end=‘‘)
Python學習筆記_1_基礎_6:文件