Python文件操作IO open 读-取-写
PythonIO文件操作,讀、取、寫
?
?
本篇內(nèi)容 文件的操作。
?文件的練習(xí)
?文件的操作
讀取信息 、寫入信息、文件有那么多的字,在什么地方寫入、怎么 控制它。
文件對象 ===? 讀取 === 寫入
?
生成文件對象
Fileobject = open(filename,mode) py3 py2 通用
文件對象 = 打開(文件名稱,文件模式)
Fileobject = file(filename,mode)py2用的
?
文件對象 = 文件(文件名稱,文件模式)
對文件進行操作。
圖形界面打開文件過程,先找到文件 --雙擊打開。
程序打開文件工程,找到文件--確定是這個文件打開。
程序打開并不是一定能看見,通常是給程序員看或者用戶。
通過程序 給某一個文件建立起某一個聯(lián)系,在這 叫做生成文件對象。
可以理解為,你和文件建立起了聯(lián)系,你要讀取還是寫入信息,還沒確定。
在文件進行操作之前第一步就是生成一個文件對象。
兩個方法。一個open 一個file
? open方法
fileobject = open(filename,mode)? py2,py3 都可用
文件方法 = 打開(文件名,方法)
?file方法
fileobject = file(filename,mode) py 用
文件方法 = 文件(文件名,方法)
要養(yǎng)成一個習(xí)慣,用兩個都有的? 的open。這樣用2py也可以,3py也可以。減去后續(xù)不必要的麻煩。
?
示范 fileobject = open (filename,mode)
方法 =? 確定文件在什么地方,(在什么路徑,用讀取還是寫入方式打開。)
第一種情況進入我創(chuàng)建的文件夾選項,進入的的ipython。可直接打開文件
返回的提示表達:方式是 r 打開 編碼格式是CP936
此時獲得并不是文件的內(nèi)容,只是一個文件獲得的一個句柄,或者理解為對象。
?
第二張情況 因為執(zhí)行的文件環(huán)境是同一個目錄下,只需要執(zhí)行文件的名字。
如果不是一個文件目錄,需要r文件 指定目錄 寫上完整路徑
?
讀取文件
注意: 進行讀取文件,可以后面方法寫上'r' ,也可以不加 ,因為程序默認的就是為'r'的參數(shù)
基本文件操作過程
Read 語法
選擇字節(jié)數(shù)的操作
read列子
講解含義:
1 先生成一個對象。然后通過對象的方法。《某對象 = 方法》
2 選擇是對文件進行讀取信息,還是寫入信息。《f.read() = 對象 ,閱讀》,讀到信息
3 操作完畢后對象 文件關(guān)閉 ,主要是為了釋放內(nèi)存。《對象.close()》
?
文件操作方法 和對象
可以組合使用,比如? r+ 就有讀取的作用、rb讀取一個二進制文件。
創(chuàng)建文件生成句柄
?
生成文件對象
創(chuàng)建文件句柄,生成文件對象的時候,是讀是寫還是追加去寫。
?
基本上功能如下圖,唯一的區(qū)別還是有一點的,先了解下怎么樣讀取和寫入,
然后在看它們的區(qū)別
?
?
介紹 readline
之前用的read,它是讀取全部的內(nèi)容,
但是有的時候,內(nèi)容有很多行,每一次只想讀取一行,這個時候就該用到readine,逐行讀取,也可以指定字節(jié)。
Readline列子
每次執(zhí)行的話會讀取一行。如果為空的話,會顯示? \n
?
每次執(zhí)行readline命令內(nèi)容就會讀取下一行,其實這個時候 指針就在起作用了,每次執(zhí)行一次,指針調(diào)到下一行第一個字符。這就是readline過程
選擇一次讀多少字節(jié),這里為一次5字節(jié) 。
沒有就顯示\n
?
freadlines列子
readlines
可以直接讀取多行,然后返回一個列表。
形成一個列表。每一個元素就是一行,直接通過列表方式 獲取第幾行數(shù)據(jù)。
?
小補充
這個案例是不讓你產(chǎn)生錯覺,用 read 讀取后 指針會一直往下掃描。一直讀取全部,。 當指針到最后,你還想往下讀的話,是讀不出來數(shù)據(jù)的。
????? 要想在看上面數(shù)據(jù),可以用一個變量做一個賦值,保存起來。什么時候想看文件 信息,只要顯示 s變量值 就可以了。
最基礎(chǔ)的方法。其它方法也有,后面補充。
?
變量賦值案例
把 f 調(diào)用方法 保存到
變量c中。
以上介紹了IO文件在讀的時候,指針的作用
?
知道了怎么讀,
下面要看下怎么寫入數(shù)據(jù)
Write語法
Write例子
上圖解有、 w效果為寫入和重建。
表達含義:
1.用 w 寫入權(quán)限 寫入,此時新建一個為xq5txt文件。
2.用 write方法寫入,內(nèi)容。一共為14個字節(jié)
3.可以明確看出此時創(chuàng)建的文件只有寫,沒有讀的權(quán)限
4.f變量用 r 讀的方式
5.用讀的權(quán)限 完美讀取 新建的xq5.txt里面的內(nèi)容;???????
?
Writeines語法
Wwritelines例子:
表達含義:
1.用寫的方式,w打開文件
2.用writlines 列表寫入法
3.釋放文件
4.讀取文件
5.讀取得到 寫入的數(shù)據(jù);
列表數(shù)據(jù)變成一行的數(shù)據(jù)
?
?
文件 對象 組合使用
注意下 rw 不能 組合使用 。
所以w只可以寫入,如果想 有更新作用就用一個加號。
r w a三個 ?組合的時候,只能用到和a的 組合!
?
w +
可以組合使用,
但是 w 的效果是每次用時,就會重建數(shù)據(jù),
1.用w 寫入 + 更新 功能 就會有寫入效果
2.之前這個文件里面為時間信息,可現(xiàn)在碰到w了,就會重新創(chuàng)建一個文件,是個新的文件,所以里面什么都沒有。
3.更新寫入內(nèi)容? =.=
4.讀取數(shù)據(jù),現(xiàn)在是讀不到數(shù)據(jù)的,因為更新寫入數(shù)據(jù)時也是指針控制。寫完一個指針移動一下,等你寫完之后指針就到了結(jié)尾處 ,所以讀取數(shù)據(jù)時,是讀不到前面的。
除非把指針移動到開口去。
?
a
含義 寫入,在文件末尾追加新的內(nèi)容,文件不存在,創(chuàng)建之
下面看下? a的效果跟 w 做一下對比。
表達含義:
1.用a的方法 操作打開文件
2.進行寫入的操作,a是可以寫入的。
3.查看文件是沒有權(quán)限的
4.釋放文件控制
5。用讀的方式查看了 a寫入的有沒有生效;
6.追加信息成功,在文件末尾追加了abc
w是直接寫入 重建文件
a是在文件末尾追加內(nèi)容。如果沒有文件就新建一個。
?
看下a+和 r+ 的區(qū)別
表達含義:
a+
1. 對xq5.txt文件進行 a末尾更新權(quán)限 +獲得讀的權(quán)限
2.讀取的是為空的,因為指針現(xiàn)在在文件結(jié)尾。沒有消息
3.釋放文件
r+、
4.進行讀取更新。可讀可寫。
5.寫入內(nèi)容 hello
6.因為寫入后文件為文件末尾,查看也為空,就釋放文件用讀的方式。
7.用r 的方式對 xq5.txt文件進行操作。
8.打開感覺出現(xiàn)了替換的效果,用r的話,因為r的權(quán)限是讀,會從文件的開頭讀取,+是更新,可以寫入。產(chǎn)生了一個替換的效果。
?
?
到這里呢,對著三個模式的基本概念就明確了。
至于b和U,如果要進行讀取 二進制的圖片 MP3這類文件或者一個程序,可以 進行 rb 進行讀取。
但是讀取出來的信息不是人類能搞懂的一個信息。
現(xiàn)在已經(jīng)基本上講解了怎么讀 怎么寫。
讀有read 、readline、readlines、
寫有write、writelines、
了解知識點,了解IO文件的 讀取 創(chuàng)建 寫入方法。
?
補充更新1.9
介紹幾個新功能
提交更新、偏移量、
FilcObject.flush()
提交更新案例
表達含義
1.先查看文件,
2.內(nèi)容如下
3.釋放內(nèi)存解除文件占用
4.用 r+ , 讀取更新方式 賦值
5.寫入新的內(nèi)容。
?
寫入命令 執(zhí)行后 ,文件不會立即生效,
這個時候運用 .flush(),及時更新,文件重新打開立即生效。
如果不提交更新,當你用.close之后,把文件關(guān)掉,它會自動提交更新。
?
偏移量
FileObkect.seek (偏移量,選項)
文件 對象.查找
偏移? 代表你要移動幾位,,選項為? 位置選擇字符位置0
?
?
.seek例子
文件已經(jīng)讀取過,選擇讀取,在讀是讀不到數(shù)據(jù)的。
因為指針,移動到了文件末尾,所以讀取后面內(nèi)容為空。這個時候就運用到我們的方法了。
?
?
偏移量為0,選項為0,指針移動到文章開頭。
指針 從頭讀取得到內(nèi)容。
?
偏移量為1 ,選項為0,指針從頭移動。移動一位。
讀取得到指針移動一位后的下面內(nèi)容。
?
除了從開頭開始移動
還有兩種移動方式,
一種是表示從當前,指針所指向的位置,先后移動,選項為1,
如果從文件的末尾像前移動的話,選項為2.
?
注意事項
在PY3中
這里是用r的方式打開的
注意純文本的文件,不允許從當前位置,從文件末尾,先前 或者先后移動。
區(qū)別點 : py3中要用 rb? 二進制的方式去打開它,py2里可以直接用? r 讀取的方式打開 。
?
選項為 1 和 2的 展示
選項1展示
選擇為1的顯示
1,用rb讀取方式。
2.b 代表用 二進制的方式讀取的,讀取全部內(nèi)容
3.從當前位置,讀取,當前位置為末尾,向前讀取4位
4.得到內(nèi)容 48hh
?
選項為2的顯示。
選項為 2 的顯示,
1.用 rb 讀取二進制的方式,
2. b? 代表用二進制方式讀取的 ,讀取全部內(nèi)容
3.偏移量為-2,代表向前移動,選項2 代表從文件末尾向前移動偏移量。
4.向前移動兩位得到后兩位結(jié)果 hh
轉(zhuǎn)載于:https://blog.51cto.com/xwxhvip/2058006
總結(jié)
以上是生活随笔為你收集整理的Python文件操作IO open 读-取-写的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fastcgi协议分析与实例
- 下一篇: Servlet重定向的过程(二)