python3-file文件操作


# Auther: Aaron Fan

'''
打開文件的模式有三種:
r,只讀模式(默認)。
w,只寫模式。【不可讀;不存在則創建;存在則刪除內容;因為會清空原有文件的內容,一定要慎用】
a,追加模式。【可讀; 不存在則創建;存在則只追加內容;】
注意最后要記得關閉文件:f.close()
python只能將字符串寫入到文本文件。要將數值數據存儲到文本本件中,必須先試用函數str()將其轉換為字符串格式。
#r模式(只讀模式)
f = open('yesterday',encoding='utf-8')
data = f.read()
f.close()
print(data)
#只讀文件的前5行:
f = open('yesterday','r',encoding='utf-8')
for i in range(5):
print(f.readline())
#以列表的方式讀取這個文件
f = open('yesterday','r',encoding='utf-8')
for line in f.readlines():
print(line)
#對文件的第3行,做一個特殊的打印(這種方式比較低效,因為它會先把文件全部讀取到內存中,文件較大時會很影響性能)
f = open('yesterday','r',encoding='utf-8')
for index,line in enumerate(f.readlines()):
if index == 2:
print('-----測試線----',line)
continue
print(line)
#比較高效的,逐行讀取文件內容,因為它是一行一行的去讀取文件,不會先把文件一次性全部讀取到內存中
f = open('yesterday','r',encoding='utf-8')
for line in f:
print(line)
#比較高效的,對文件的3三行進行過特殊打印
f = open('yesterday','r',encoding='utf-8')
count = 0
for line in f:
if count == 2:
print('------測試線----:',line)
count += 1
print(line)

#w模式(如果沒有就創建文件,如果有就清空文件,一定要慎用)
f = open('yesterday','w',encoding='utf-8')
f.write("這就是一行測試\n")
f.write("測試2\n")
f.write("測試3")

#a模式(追加模式,如果沒有就創建文件,如果有就把內容追加進去)
f = open('yesterday','a',encoding='utf-8')
f.write("test1\n")

#文件光標的操作
f = open('yesterday','r',encoding='utf-8')
#獲得文件的光標
print(f.tell())
print(f.readline())
print(f.tell())
#回到最開始的位置(也可以指定一個位置,前提是你得知道你去往的字符具體在哪個位置才行)
f.seek(0)

#顯示文件的編碼
print(f.encoding)
#顯示文件句柄的編號(我並不確定這個說法是否正確,用到時請仔細去查一下)
print(f.fileno())
#測試是否是一個終端設備文件
print(f.isatty())
#把緩存的內容刷新到硬盤(進度條那個腳本里有寫一個示例)
f.flush()
#指定文件從哪里開始截斷,如果沒有參數,默認從0開始等於清空了這個文件
#f.truncate()

#r+ 模式(讀,追加模式)
f = open('yesterday','r+',encoding='utf-8')
data = f.read()
print(data)
f.write("test...\n")

#還有 w+寫讀模式, a+追加讀模式,這一般不用,真用到了再去了解下吧
#rb 模式,以二進制的方式讀取這個文件
#wb 模式,二進制寫
'''

'''
#with語句(很實用,記得要經常用喲~,在《Python編程從入門到實戰》那本書里的文件與異常那一章有詳細用法)
#為了避免打開文件后忘記關閉,可以通過管理上下文,即:
with open('log','r') as f:

...
#如此方式,當with代碼塊執行完畢時,內部會自動關閉並釋放文件資源。
#在Python 2.7 后,with又支持同時對多個文件的上下文進行管理,即:
with open('log1') as obj1, open('log2') as obj2:
pass
'''


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM