今天挑戰一下,將day08和day09的搞定。今天主要學習了文件的操做讀寫、html
來來總結一波:python
學習了文件的讀:r、rb、r+、r+bbash
寫:w、wb、w+、w+b機器學習
文件句柄,seek光標,flush強制刷新文件內容,tell:告訴當前句柄所在的位置(int)函數
Day09:函數的定義學習
傳參:實參、形參編碼
Python 中的文件操做很重要,雖然不難,可是坑很多,好比:文件的編碼方式。若是你搞懂 Python 的編碼方式了,這都不是問題,具體可看我以前寫的文章:Python文件編碼問題。還有就是應用場景不少,好比機器學習中數據的讀取和寫入、Web 爬蟲的數據存取等。操作系統
open(file, mode='w', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
參數說明:code
mode: 可選,文件操做模式htm
寫入的 mode 有:w 以 Unicode 的方式寫入文件內容,wb 寫入二進制的文件內容,w+ 能夠讀取也能夠寫入,加號至關因而添加了一個功能,wb+ 可讀可寫二進制文件。
# 一、麻煩的一種方式, file_name = "write_test.txt" f = open('write_test.txt', mode='w', encoding="utf8") # 定義操做文件的句柄f, f.write("這是一個") # 寫入內容 f.close() # 關閉文件句柄 # 二、推薦方式 使用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()
方法讀取文件不是很推薦,由於他會一次性將文件全部數據讀取到內存中
# 一、read方法 with open("write_test.txt", mode='r', encoding="utf8") as f: content = f.read() print(content) # 1.二、讀取前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 """ # 二、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()
返回文件中全部行內容的列表,以換行符做爲分隔。
# 三、readlines with open("write_test.txt", mode='r', encoding="utf8") as f: content = f.readlines() print(content, type(content)) # ['我是主流with讀取文件的方式。\n', 'hi 第二行'] <class 'list'>
小總結:readlines()
方法針對小文件而言,適合並且快;可是對於一個大的文件,一次性徹底讀取到內存中,就很費資源,不是很推薦。
可是我 Python 怎麼可能不解決此問題,請出咱們今天的讀取文件的主角方式 迭代讀取文件內容。
推薦,
""" write_test.txt 內容: 我愛 學習Python """ # 二、readline with open("write_test.txt", encoding="utf8") as f: for each in f: print(each) # 打印: """ 我愛 學習Python """
文件操做很重要,可是少不了文件編碼的問題,因此要搞懂編碼問題。不然後面再有編碼的問題,在學習就有點浪費時間了。
參考文章: