在實際操作中,我們經常會讀取文件,這個時候python為我們提供了一個open()的方法,供我們讀取文件,通過help(open),我們可以獲取open的方法
f.close()關閉讀取
f.read(size=-1)讀取文件size個字符,但未給size賦值或者賦值為負數時,讀取的是文件剩余的所有字符,然后以字符串方式進行返回。
f.readline()以寫入模式打開,如果文件存在,則在末尾加入
f.write(str)將字符串str寫入文件
f.writelines(seq)想文件寫入字符串序列seq,seq應該 是一個返回字符串的可迭代對象
f.seek(offset,from)在文件中移動當前讀取文件的指針,
f.tell()返回當前文件讀取的指針位置
#file 是文件路徑,mode 是文件打開模式,常用的應該還有一個encoding 編碼格式。 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) #這個是文件打開模式 ''' 'r' open for reading (default) 默認只讀 'w' open for writing, truncating the file first 以寫的方式打開文件,會覆蓋源文件 'x' create a new file and open it for writing,創建一個新的文件打開並進行寫入操作,如果這個文件已經存在,則會報錯 'a' open for writing, appending to the end of the file if it exists 以寫的方式打開文件,當執行寫入操作時,會將寫入的內容追加在原文件之后 'b' binary mode 以二進制方式打開文件 't' text mode (default) 以文本模式打開 '+' open a disk file for updating (reading and writing) 可讀寫模式,可添加到其他模式中用 'U' universal newline mode (deprecated) 通用換行符 '''
假設我們有一文件,存放在E:\\python\\day-2\\文字.txt目錄下,txt內容為“
我喜歡寂寞,喜歡在夜深人靜時獨處一室,這樣我就可以敞開心扉,與自己的心靈對話。我從中得到了反省,也使我更加向前。
我問心靈:“心靈,我對家人是不是很關心?”
心靈不語,但它在我的腦海中展現出了幾幅畫面。
畫面中,我匆匆而去的關門聲掩蓋了媽媽那一聲“小心點”的關懷;畫面中,我對那飯菜不滿的情緒,讓爸爸無可奈何地搖搖頭。
看了這兩幅畫面,我感到無比愧疚,我看到了自己對家人的冷漠,對親情的淡漠。
於是,我向心靈保證,我以后一定要關心家人。心靈笑了。
我又問心靈:“心靈,我對朋友是不是很友善?”
心靈贊許的點了點頭,說:“有朋友有了困難,你能夠熱情的幫助;有朋友遇到了傷心事,你能真誠地去安慰。對待朋友就應該這樣!”
我開心地笑了。
我再一次問心靈:“我對他人是不是做到了尊重?”
心靈無奈地搖搖頭,說:“你還沒有,有一次,一位同學不小心碰掉了你的書和筆,你就對他大加指責;有一位陌生人向你問路,你卻因忙着回家而不理不睬;還有......”
聽了心靈的話,我萬方愧疚,甚至有些無地自容。我發誓,我一定要伸出援助之手,以尊重的心態對待每一個人。
在於心靈的對話中,我反省了自己。
我每天都在變化,我要感謝心靈,是它帶我成長,是它,讓我的成長更加和諧而美麗!
”
那么我們通過利用open進行對它的操作。
#打開文件 >>> f = open('E:\\python\\day-2\\文字.txt','r') #讀取文件 >>> f.read() '我喜歡寂寞,喜歡在夜深人靜時獨處一室,這樣我就可以敞開心扉,與自己的心靈對話。
我從中得到了反省,也使我更加向前。 \u3000\u3000\n
我問心靈:“心靈,我對家人是不是很關心?” \u3000\u3000\n心靈不語,但它在我的腦海中展現出了幾幅畫面。
\n畫面中,我匆匆而去的關門聲掩蓋了媽媽那一聲“小心點”的關懷;畫面中,我對那飯菜不滿的情緒,讓爸爸無可奈何地搖搖頭。
\n看了這兩幅畫面,我感到無比愧疚,我看到了自己對家人的冷漠,對親情的淡漠。\n於是,我向心靈保證,我以后一定要關心家人。
心靈笑了。 \u3000\u3000\n
我又問心靈:“心靈,我對朋友是不是很友善?” \u3000\u3000\n
心靈贊許的點了點頭,說:“有朋友有了困難,你能夠熱情的幫助;有朋友遇到了傷心事,你能真誠地去安慰。對待朋友就應該這樣!” \u3000\u3000\n
我開心地笑了。 \u3000\u3000\n我再一次問心靈:“我對他人是不是做到了尊重?” \u3000\u3000\n
心靈無奈地搖搖頭,說:“你還沒有,有一次,一位同學不小心碰掉了你的書和筆,你就對他大加指責;有一位陌生人向你問路,你卻因忙着回家而不理不睬;還有......” \u3000\u3000\n
聽了心靈的話,我萬方愧疚,甚至有些無地自容。我發誓,我一定要伸出援助之手,以尊重的心態對待每一個人。 \u3000\u3000\n
在於心靈的對話中,我反省了自己。
\n我每天都在變化,我要感謝心靈,是它帶我成長,是它,讓我的成長更加和諧而美麗!\n\n ' #再次讀取文件 >>> f.read() #返回了空 ''
當我們用f.read()第二次讀取的時候,因為游標已經走到了文章的結尾,所以第二次讀取為空。那么我們想再一次讀取該文件的時候
#移動讀取指針位置為起始位置 >>> f.seek(0,0) 0 #讀取文件一行 >>> f.readline() '我喜歡寂寞,喜歡在夜深人靜時獨處一室,這樣我就可以敞開心扉,與自己的心靈對話。我從中得到了反省,也使我更加向前。 \u3000\u3000\n' #當前位置的游標 >>> f.tell() 119
遍歷所有對話內容(每一行)
傳統的方法,傳統的方法雖然可以打印每一句話,但是效率不是很高。先看一下傳統方法打印:
#首相將游標歸到初始值 >>> f.seek(0,0) 0 #利用list 來分割f >>> list1 = list(f) #循環打出每一句 >>> for each in list1: print(each)
那么為了解決這個問題 Python為我們提供了直接打印的方式
>>> f.seek(0,0) 0 >>> for each_line in f: print(each_line)
接上邊的例子,當我們想用write()來對剛才的文件進行寫操作的時候,會發現不能寫入,直接報錯。因為我們操作這個文件的模式是r模式,也就是只讀模式:
>>> f.write("我愛你") Traceback (most recent call last): File "<pyshell#20>", line 1, in <module> f.write("我愛你") io.UnsupportedOperation: not writable >>>
如果我們想對一個文件進行操作,那么我該如何操作,首先我們嘗試一下open(file,'w')
# 這里利用w是一個只寫操作 >>> f = open('E:\\python\\day-2\\text.txt','w') # 我們寫入一個i love python >>> f.write("i love python") 13 # 嘗試用read()來讀取 >>> f.read() # 報錯了,說我們不能讀 Traceback (most recent call last): File "<pyshell#24>", line 1, in <module> f.read() io.UnsupportedOperation: not readable #這個時候如果沒有進行下一步操作,你在e盤下看到的那個文件應該是0kb #如果執行了close()操作,就會變成1kb,因為你要告訴Python說 你已經 #操作完畢了,可以把這些東西從內存中存儲到硬盤了。 >>> f.close()
當我們用‘x’來進行寫文件的時候,一定要注意目錄下是否已經存在該文件,如果存在則會報錯:
>>> e = open('E:\\python\\day-2\\text.txt','x') Traceback (most recent call last): File "<pyshell#43>", line 1, in <module> e = open('E:\\python\\day-2\\text.txt','x') FileExistsError: [Errno 17] File exists: 'E:\\python\\day-2\\text.txt'
但是如果我們不想讓報錯,那么我們可以用w,這樣不管這個文件存在不存在都不會報錯,因為如果存在,它就會打開這個文件,如果不存在則會創建這個名字的文件。
#w創建 d = open('E:\\python\\day-2\\text.txt','w')
當我們想在一個文件的內容后邊追加內容的時候我們就用到了‘a’,它的打開方式是打開文件,並將輸入的字符串append到當前字符串的后邊
>>> f = open('E:\\python\\day-2\\文字.txt','a') >>> f.write(" are you sure?") 14 >>> f.close() >>> f = open('E:\\python\\day-2\\文字.txt','r') >>> f.read() 'i love python are you sure?' >>> f.close()
