Python文件操做

文件讀取常見方式

方式一:編碼

f = open('d:\word.txt',mode='r',encoding='utf-8')
msg = f.read()
f.close()
print(msg)

read()將文件中的內容所有讀取出來;弊端:若是文件很大就會很是的佔用內存,容易致使內存奔潰.spa

解決:在r模式下,n按照字符讀取code

f = open('d:\word.txt',mode='r',encoding='utf-8')
msg = f.read(3)
msg1 = f.read()
f.close()
print(msg)
print(msg1)

方式二:視頻

f = open('word.txt',mode='r',encoding='utf-8')
msg1 = f.readline().strip()
msg2 = f.readline().strip()
msg3 = f.readline().strip()
msg4 = f.readline().strip()
f.close()
print(msg1)
print(msg2)
print(msg3)
print(msg4)

readline()讀取每次只讀取一行,注意點:readline()讀取出來的數據在後面都有一個\n,解決這個問題只須要在咱們讀取出來的文件後邊加一個strip()就OK。blog

方式三;圖片

f = open('word.txt',mode='r',encoding='utf-8')
print(f.readlines())
f.close()

 readlines() 返回一個列表,列表裏面每一個元素是原文件的每一行,若是文件很大,佔內存,容易崩盤。ip

方式四:內存

能夠經過for循環去讀取,文件句柄是一個迭代器,他的特色就是每次循環只在內存中佔一行的數據,很是節省內存。utf-8

f = open('../path1/弟子規',mode='r',encoding='utf-8')
for line in f:
    print(line)   #這種方式就是在一行一行的進行讀取,它就執行了下邊的功能
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
f.close()

文件操做方式:it

#1. 打開文件的模式有(默認爲文本模式):
r ,只讀模式【默認模式,文件必須存在,不存在則拋出異常】
w,只寫模式【不可讀;不存在則建立;存在則清空內容】
a, 只追加寫模式【不可讀;不存在則建立;存在則只追加內容】

#2. 對於非文本文件,咱們只能使用b模式,"b"表示以字節的方式操做(而全部文件也都是以字節的形式存儲的,使用這種模式無需考慮文本文件的字符編碼、圖片文件的jgp格式、視頻文件的avi格式)
rb 
wb
ab
注:以b方式打開時,讀取到的內容是字節類型,寫入時也須要提供字節類型,不能指定編碼

#3,‘+’模式(就是增長了一個功能)
r+, 讀寫【可讀,可寫】
w+,寫讀【可寫,可讀】
a+, 寫讀【可寫,可讀】

#4,以bytes類型操做的讀寫,寫讀,寫讀模式
r+b, 讀寫【可讀,可寫】
w+b,寫讀【可寫,可讀】
a+b, 寫讀【可寫,可讀】

seek()

seek(n)光標移動到n位置,注意: 移動單位是byte,全部若是是utf-8的中文部分要是3的倍數

一般咱們使用seek都是移動到開頭或者結尾

移動到開頭:seek(0)

移動到結尾:seek(0,2) seek的第二個參數表示的是從哪一個位置進行偏移,默認是0,表示開頭,1表示當前位置,2表示結尾

 

tell()

使用tell()能夠幫咱們獲取當前光標在什麼位置

with方式打開文件

# 利用with上下文管理這種方式,它會自動關閉文件句柄。
with open('t1',encoding='utf-8') as f1:
    f1.read()
    
# 一個with 語句能夠操做多個文件,產生多個文件句柄。
with open('t1',encoding='utf-8') as f1,\
        open('Test', encoding='utf-8', mode = 'w') as f2:
    f1.read()
    f2.write('老男孩老男孩')
相關文章
相關標籤/搜索