目錄python
打開文件,獲得文件句柄並賦值給一個變量編碼
經過句柄對文件進行操做指針
關閉文件code
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)對象
name : 一個包含了你要訪問的文件名稱的字符串值。ip
mode : mode 決定了打開文件的模式:只讀,寫入,追加等。全部可取值見以下的徹底列表。這個參數是非強制的,默認文件訪問模式爲只讀(r)。內存
buffering : 若是 buffering 的值被設爲 0,就不會有寄存。若是 buffering 的值取 1,訪問文件時會寄存行。若是將 buffering 的值設爲大於 1 的整數,代表了這就是的寄存區的緩衝大小。若是取負值,寄存區的緩衝大小則爲系統默認。字符串
encoding:對文件規定打開的編碼it
newline = 「」:讀取文件真正的換行符,在window裏面爲「\r\n」,Linux和Python裏面爲「\n」編譯
模式 | 描述 |
---|---|
r | 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。 |
rb | 以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。這是默認模式。 |
r+ | 打開一個文件用於讀寫。文件指針將會放在文件的開頭。 |
rb+ | 以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。 |
w | 打開一個文件只用於寫入。若是該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。若是該文件不存在,建立新文件。 |
wb | 以二進制格式打開一個文件只用於寫入。若是該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。若是該文件不存在,建立新文件。 |
w+ | 打開一個文件用於讀寫。若是該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。若是該文件不存在,建立新文件。 |
wb+ | 以二進制格式打開一個文件用於讀寫。若是該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。若是該文件不存在,建立新文件。 |
a | 打開一個文件用於追加。若是該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容以後。若是該文件不存在,建立新文件進行寫入。 |
ab | 以二進制格式打開一個文件用於追加。若是該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容以後。若是該文件不存在,建立新文件進行寫入。 |
a+ | 打開一個文件用於讀寫。若是該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。若是該文件不存在,建立新文件用於讀寫。 |
ab+ | 以二進制格式打開一個文件用於追加。若是該文件已存在,文件指針將會放在文件的結尾。若是該文件不存在,建立新文件用於讀寫。 |
序號 | 方法及描述 |
---|---|
1 | file.close() 關閉文件。關閉後文件不能再進行讀寫操做。 |
2 | file.flush() 刷新文件內部緩衝,直接把內部緩衝區的數據馬上寫入文件, 而不是被動的等待輸出緩衝區寫入。 |
3 | file.fileno() 返回一個整型的文件描述符(file descriptor FD 整型), 能夠用在如os模塊的read方法等一些底層操做上。 |
4 | file.isatty() 若是文件鏈接到一個終端設備返回 True,不然返回 False。 |
5 | file.next() 返回文件下一行。 |
6 | file.read([size]) 從文件讀取指定的字節數,若是未給定或爲負則讀取全部。 |
7 | file.readline([size]) 讀取整行,包括 "\n" 字符。 |
8 | file.readlines([sizehint]) 讀取全部行並返回列表,若給定sizeint>0,則是設置一次讀多少字節,這是爲了減輕讀取壓力。 |
9 | file.seek(offset[, whence]) 設置文件當前位置 |
10 | file.tell() 返回文件當前位置。 |
11 | file.truncate([size]) 截取文件,截取的字節經過size指定,默認爲當前文件位置。 |
12 | file.write(str) 將字符串寫入文件,返回的是寫入的字符長度。 |
13 | file.writelines(sequence) 向文件寫入一個序列字符串列表,若是須要換行則要本身加入每行的換行符。 |
###############只讀模式的使用############### >>> f = open("C:/Users/DELL/Desktop/test.txt","r",encoding="GBK") >>> date = f.read() ## 讀出全部的文字 >>> print(date) >>>date.close() ##每次都要close()儲存 Hello,World! >>>file_name = "C:/Users/DELL/Desktop/test.txt" >>>f = open(file_name, "r", encoding = "GBK") >>>print("First", f.readline()) ## 一列一列的顯示文字 >>>print("Second", f.readline()) >>>print("Third", f.readline()) >>>print("Forth", f.readline()) First Hello,World! Second I love you! Third You are so beautiful! Forth HaaaaHaaa! >>>file_name = "C:/Users/DELL/Desktop/test.txt" >>>f = open(file_name, "r", encoding = "GBK") >>>print(f.readlines()) ## 把內容顯示成列表 ['Hello,World!\n', 'I love you!\n', 'You are so beautiful!\n', 'HaaaaHaaa!\n', 'Are you ok?\n'] ###############只讀模式和追加模式的使用############### >>>f = open("test.txt", "w", encoding = "UTF-8") // f = open("test.txt", "a", encoding = "UTF-8") """在字符處理裏面,w模式會再新建一個文件(會替代原來的文件)來寫入內容,而a模式會添加內容,若是沒有該文件就新建一個""" >>>print(f.readable()) False ## 在只寫模式下打開的文件不能讀 >>>print(f.writable()) True >>>f.write("I love you!") 11 ## 顯示其字節數 >>>f.flush() ## 把內存裏面的內容加載到磁盤裏面 >>>f.writelines(["I love you!\n","You are so good!\n","Thank you very much!\n"]) ## 用列表寫入文字 >>>f.close() >>>f = open(file_name, "r+", encoding = "GBK") ##爲讀寫模式,便可以寫入也能夠閱讀 >>>f=open('test.txt','rb') ## 以二進制的方式打開,不能指定編碼 >>>date = f.read() >>>print(date) b'\xce\xd2\xcf\xb2\xbb\xb6\xc4\xe3\r\n' >>>print(date.decode("gbk")) 我喜歡你 >>>f=open('test.txt','wb') // >>>f=open('test.txt','ab') ##在這樣模式下,寫入內容必須先把內容編譯成指定二進制 >>>f.write(bytes("我愛你",encoding = "gbk")) ## 用bytes方法 6 >>>f.flush() 我愛你 >>>f.write("我愛你".encode("gbk")) ##encode方法 6 >>>f.close() 我愛你我愛你 ################################################################################### >>>f.closed #文件若是關閉則返回True >>>print(f.closed) True >>>f.tell() #查看文件處理當前的光標位置 0 ################# fileObject.seek(offset[, whence]) """可選,默認值爲 0。給offset參數一個定義,表示要從哪一個位置開始偏移;0表明從文件開頭開始算起,1表明從當前位置開始算起(必須使用b模式打開),2表明從文件末尾算起""" >>>f.seek(3) #從開頭開始算,將光標移動到第三個字節 3 >>>print(f.tell()) 3 >>>f.seek(3,1) 6 >>>f.seek(3,2) 24 >>>f.seek(-2,2) 19 >>>f.truncate(5) #從開頭開始算,將文件只保留從0-10個字節的內容,文件必須以寫方式打開,可是w和w+除外 5 >>>print(f.read()) I lov
with open( ) as variable
這種方式打開的文件將不用使用close()或者flush(),刷入內容
with open("test.txt", "r+") as f: print(f.read())