【Python學習筆記Day28】5.4 Python文件的使用

#對文件的處理
輸入–> 處理–> 輸出
前面很多講中,我們很好的處理數據,然後打印輸出結果
即input()和print()獲取和打印

1.文件

.exe .txt .ppt .jpg .mp4 .avi

1. open() 打開文件

可以使用 help(open)來查看文檔

open(file, mode='r', buffering=-1, encoding=None,
errors=None, newline=None, closefd=True, opener=None)

file是文件名, mode即爲打開模式,

2.打開模式:
1)‘r’ 以只讀方式打開文件(默認)
2)‘w’ 以寫入方式打開文件,會覆蓋已存在的文件,不存在會創建
3)‘x’ 如果文件已經存在,使用此模式打開將引發異常
4)‘a’ 以寫入模式打開,如果文件存在,則再末尾追加寫入
5)‘b’ 以二進制模式打開文件
6)‘t’ 以文本模式打開(默認)
7)’+’ 可讀寫模式(可添加到其他模式使用)
8)‘U’ 通用換行符支持

打開此文件夾下的1st.py

f = open('test.txt',encoding='utf-8')
print(f)
#打印出以下格式
#<_io.TextIOWrapper name='D:\\Project\\python\\1st.py' mode='r' encoding='cp936'>

2.文件對象方法

#文件對象方法 執行操作

1)f.close() 關閉文件

在C語言的程序中,在打開文件操作完後,一定得記得關閉文件,
在python語言中,由於存在垃圾回收機制,可以不必關閉文件
但並不是說不用關閉文件,在完成寫入之後,需要關閉文件,因爲python會緩存寫入的數據,如果中途
斷電,緩存的數據不會寫入文件中

2)f.read([size=-1]) 從文件讀取size個字符,當未給定size或給定負值的時候,讀取剩餘的所有字符,然後作爲字符串返回
print(f.read())     #打印文件內的所有信息
print(f.read())     #再次讀取,則打印空行
f.close()   #關閉文件


f = open('test.txt',encoding='utf-8')
print(f.read(5))    #打印讀取的前五個字符
#這時候的文件指針在第五個字符的位置
print(f.tell())     #打印5 告訴我們當前位置在5

對於有中文字符的來說,一箇中文代表兩個字節,這裏並不是對等

f.close()
f = open('test.txt',encoding='utf-8')
print(f.read(15))    #打印讀取的前15個字符
print(f.tell())     #打印16 告訴我們當前位置在16
3)f.readline([size=-1]) 從文件中讀取並返回一行(包括行結束符),如果有size有定義則返回size個字符
4)f.write(str) 將字符串str寫入文件
5)f.writelines(seq) 向文件寫入字符串序列seq,seq應該是一個返回字符串的可迭代對象
6)f.seek(offset, from) 在文件中移動文件指針,從from(0代表文件起始位置,1代表當前位置,2代表文件末尾)偏移offset個字節
7)f.tell() 返回當前在文件中的位置(指針位置)
8)f.truncate([size=file.tell()]) 截取文件到size個字節,默認是截取到文件指針當前位置
print("seek()方法")
f.close()
f = open('test.txt',encoding='utf-8')
print(f.seek(15,0))  # 從文件開頭開始,指針在25的位置
print(f.readline()) #從文件中讀取的是    

print(list(f))  #講文件轉化爲列表,每一行爲一個元素

f.seek(0,0)
lines = list(f)
for each_line in lines:
    print(each_line)
#這樣的效率很低,尤其對於數據很長的時候
#可以直接使用
f.seek(0,0) #指針返回文件開頭
for each_lin in f:
    print(each_lin)

3. 文件的寫入

寫入文件時,必須確保在打開模式中有可寫入的模式
f.write(‘I love you’) #報錯,不可寫入

f1 = open('test1.txt','w') #沒有文件則創建
print(f1.write('I love you'))        #返回的是寫入幾個字符 打印10
f1.close()#關閉纔會寫入字符串,沒有關閉,則會放在python的緩衝區裏
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章