今天挑戰一下,將day08和day09的搞定。今天主要學習了檔案的操作讀寫、
來來總結一波:python 中的檔案操作很重要,雖然不難,但是坑不少,比如:檔案的編碼方式。如果你搞懂 python 的編碼方式了,這都不是問題,具體可看我之前寫的文章:python檔案編碼問題。還有就是應用場景很多,比如機器學習中資料的讀取和寫入、web 爬蟲的資料訪問等。學習了檔案的讀:r、rb、r+、r+b
寫:w、wb、w+、w+b
檔案控制代碼,seek游標,flush強制重新整理檔案內容,tell:告訴當前控制代碼所在的位置(int)
day09:函式的定義
傳參:實參、形參
open(file, mode='w', buffering=-1, encoding=none, errors=none, newline=none, closefd=true, opener=none)
引數說明:
buffering: 設定緩衝
encoding: 若不設定則預設和作業系統的預設編碼方式一樣。比如:mac os上是 utf-8,windows上是 gbk,不過 win10 上改成 utf-8 了,linux 上是 utf-8。按照解碼和編碼方式一樣的原則,有utf-8、gbk等。
errors: 報錯級別
newline: 區分換行符
closefd: 傳入的file引數型別
opener: 設定自定義開啟器,開啟器的返回值必須是乙個開啟的檔案描述符。
寫入的 mode 有:w以 unicode 的方式寫入檔案內容,wb寫入二進位制的檔案內容,w+可以讀取也可以寫入,加號相當於是新增了乙個功能,wb+可讀可寫二進位制檔案。
# 1、麻煩的一種方式,
file_name = "write_test.txt"
f = open('write_test.txt', mode='w', encoding="utf8") # 定義操作檔案的控制代碼f,
f.write("這是乙個") # 寫入內容
f.close() # 關閉檔案控制代碼
# 2、推薦方式 使用with,結束後自動關閉控制代碼
with open("write_test.txt", mode='w', encoding="utf8") as f, open("test2.txt", 'w', encoding="utf8") as f2:
f.write("我是主流with讀取檔案的方式。")
f2.write("with 可以並列操作幾個檔案哈")
寫入的 mode 有:r以 unicode 的方式讀取檔案內容,rb讀取二進位制的檔案內容,r+可以讀取也可以寫入,加號相當於是新增了乙個功能,rb+可讀可寫 二進位制檔案。
讀取檔案的方式需重點掌握,
"""
write_test.txt 檔案的內容:
我是主流with讀取檔案的方式。
hi 第二行
"""
使用f.read()
方法讀取檔案不是很推薦,因為他會一次性將檔案所有資料讀取到記憶體中,將如果檔案帶
# 1、read方法
with open("write_test.txt", mode='r', encoding="utf8") as f:
content = f.read()
print(content)
# 1.2、讀取前n個字元
print(f.tell()) # 53 tell 當前游標的位置
f.seek(0) # seek 將游標移動到0的位置 單位是位元組byte
print(f.read(4)) # 我是主流 read(n) 讀取前n個字元
f.readline()
讀取當前游標所在行的游標之後的內容。
"""
write_test.txt 內容:
我愛學習python
"""# 2、readline
with open("write_test.txt", mode='r', encoding="utf8") as f:
f.seek(10)
content = f.readline()
print(content) # 習python
來來解釋一下,首先我使用 seek(7) 將游標移動到第七個位元組上(「學習」占用6個位元組+緊接著是換行符占用乙個自位元組+第二行的」學「佔3個位元組),就到了第二行的」學「之後,然後使用 readline() 就讀到了」習python「。
f.readlines()
返回檔案中所有行內容的列表,以換行符作為分隔。
# 3、readlines
with open("write_test.txt", mode='r', encoding="utf8") as f:
content = f.readlines()
print(content, type(content))
# ['我是主流with讀取檔案的方式。\n', 'hi 第二行']
但是我 python 怎麼可能不解決此問題,請出我們今天的讀取檔案的主角方式迭代讀取檔案內容。
推薦,
"""
write_test.txt 內容:
我愛學習python
"""# 2、readline
with open("write_test.txt", encoding="utf8") as f:
for each in f:
print(each)
# 列印:
"""我愛
學習python
"""
檔案操作很重要,但是少不了檔案編碼的問題,所以要搞懂編碼問題。否則後面再有編碼的問題,在學習就有點浪費時間了。 day 08 檔案管理
2 access 1 建議鎖 檔案鎖的由來 當兩個程序在同一時刻向同乙個檔案中寫入資料時,可能造成資料的交錯和不一致問題 當乙個程序在向檔案中寫入資料的同時,另外乙個程序讀取檔案中資料時可能造成資料的不一致性問題 當兩個程序同時讀取同乙個檔案資料時,可以同時進行 沒有讀寫操作讀取操作寫入操作 讀取o...
day08 檔案操作
1 三種字串 1 u 普通字串 u abc 預設的文字方式,以字元作為文字的輸出方式 2 b 二進位制字串 b ascii碼 以二進位制 位元組 作為文字輸出方式,且文字內容必須為ascii碼 3 r 原義字串 r n t 將引號中的轉移字串以原本的意義表示出來 多用於檔案路徑的表示 2 檔案操作步...
day08 檔案操作
open 開啟 f 檔案控制代碼 open 檔案的路徑 檔案放的位置 mode 操作檔案的模式 encoding 檔案的編碼 內建函式 f open 蘿莉小姐姐 號 mode r encoding utf 8 print f.read f.close with open 自動關閉檔案 with op...