Python文本處理

對文本操做的流程:

  1. 打開文件,獲得文件句柄並賦值給一個變量編碼

  2. 經過句柄對文件進行操做指針

  3. 關閉文件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+ 以二進制格式打開一個文件用於追加。若是該文件已存在,文件指針將會放在文件的結尾。若是該文件不存在,建立新文件用於讀寫。

file對象

序號 方法及描述
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方法

with open( ) as variable

這種方式打開的文件將不用使用close()或者flush(),刷入內容

with open("test.txt", "r+") as f:
    print(f.read())
相關文章
相關標籤/搜索