1. 程式人生 > >Python學習筆記_1_基礎_6:文件

Python學習筆記_1_基礎_6:文件

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
12
13 ‘‘‘ 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:文件