<a href="https://s5.51cto.com/wyfs02/M01/A4/C7/wKioL1mxLimxM3dZAAE1u9bLUlA591.png" target="_blank"></a>
字元的輸入及輸出
輸入(raw_input/input)---> 程式處理 ---> 輸出(print)
一.檔案管理的三大步驟:
1.打開檔案; f = open("filename")
2.處理檔案;
f.read() 可以讀取檔案内容
f.write("hello") 不能往檔案中寫入,因為預設檔案以r的模式打開;
3.關閉并儲存檔案; f.close()
檔案使用完畢後必須關閉,因為檔案對象會占用作業系統的資源。
二.檔案的幾種模式總結:
1. r模式:
若檔案不存在,直接報錯;
檔案隻能讀取,不能寫入;
<a href="https://s5.51cto.com/wyfs02/M01/06/04/wKiom1mv7hnivYWdAAAvW2ure_I367.png" target="_blank"></a>
<a href="https://s2.51cto.com/wyfs02/M00/A4/B5/wKioL1mv7fvSe4G-AACIUIkeqh4749.png" target="_blank"></a>
2. w模式:
若檔案不存在,直接建立檔案;
檔案隻能寫入,不能讀取;
打開檔案時會清空原有檔案内容;
<a href="https://s5.51cto.com/wyfs02/M00/A4/B5/wKioL1mv7m6hHZj6AACDw-C9OaQ238.png" target="_blank"></a>
3. r+模式:
若檔案不存在,直接報錯;
檔案可以讀也可以寫;
具體寫入的内容在哪裡,由檔案指針(句柄)決定;
先讀後寫
<a href="https://s4.51cto.com/wyfs02/M02/A4/B5/wKioL1mv76OD8VXwAABjbSOV9ZM098.png" target="_blank"></a>
先寫後讀
<a href="https://s4.51cto.com/wyfs02/M00/06/04/wKiom1mv78KQnKN-AABOfuFFGpw164.png" target="_blank"></a>
4. w+模式:
檔案既能寫入也能讀取;
<a href="https://s3.51cto.com/wyfs02/M02/06/04/wKiom1mv8F2gHzuSAABfBbulno8009.png" target="_blank"></a>
5. a模式
寫入的内容直接追加到檔案最後;
<a href="https://s4.51cto.com/wyfs02/M00/06/04/wKiom1mv8PKCxSPBAACUGAsZbno186.png" target="_blank"></a>
6. a+模式
<a href="https://s3.51cto.com/wyfs02/M01/06/04/wKiom1mv8TCTNj0iAACpyUiO9ak089.png" target="_blank"></a>
7. b模式
以二進制的方式打開檔案,可以跟r,w,+等組合使用;
二進制檔案
要讀取二進制檔案,比如圖檔、視訊等等,用 'rb' 模式打開檔案即可
>>> f = open('/root/test.jpg', 'rb')
>>> f.read()
'\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...' # 十六進制表示的位元組
三.檔案的讀取
将passwd裡的檔案内容追加到hello.txt中
<a href="https://s5.51cto.com/wyfs02/M00/A4/B5/wKioL1mv81jgTUzPAAAZOi95oZk804.png" target="_blank"></a>
read() 直接讀取檔案所有内容;
readline() 每次讀取檔案一行内容,傳回類型為字元串;
<a href="https://s5.51cto.com/wyfs02/M00/06/04/wKiom1mv83ehEPVSAABlhgQBpWE936.png" target="_blank"></a>
readlines() 讀取檔案所有内容,以清單形式傳回;
<a href="https://s5.51cto.com/wyfs02/M01/06/04/wKiom1mv83jSuDviAACWOzr6ogg286.png" target="_blank"></a>
xreadlines() 類似生成器,檔案内容不直接以清單方式傳回;讀取内容多時用
<a href="https://s5.51cto.com/wyfs02/M02/A4/B5/wKioL1mv81nS3bO9AACc69rx4sI918.png" target="_blank"></a>
<a href="https://s5.51cto.com/wyfs02/M01/06/04/wKiom1mv83jgBZa-AADrrFxzu4k819.png" target="_blank"></a>
四.檔案的寫入
write("str") # 将字元串寫入檔案
writelines("["hello","world"]") # 将序列的每個元素寫入檔案;
<a href="https://s1.51cto.com/wyfs02/M01/06/04/wKiom1mv9abQGS-3AAA6V5cqL0I170.png" target="_blank"></a>
<a href="https://s4.51cto.com/wyfs02/M01/A4/B6/wKioL1mv9YfxK-2EAABOoThEXmM238.png" target="_blank"></a>
五.檔案的其它操作
1.f.seek(偏移量,選項)
偏移量,如果為正數,代表向右偏移;如果為負數,代表向左偏移;
選項,如果為0,指針指向檔案開始;
如果為1,指針指向目前位置;
如果為2,指針指向檔案末尾;
2.f.flush() 送出對檔案的修改;
六.檔案的幾個注意點:
1.檔案對象是可疊代資料類型,可以通過for周遊檔案的内容;
<a href="https://s1.51cto.com/wyfs02/M01/A4/B6/wKioL1mv9wnR9YMcAAA7z1mumGQ318.png" target="_blank"></a>
2.with open("filename") as f:通過這種方法來避免使用者忘記關閉檔案的問題;不用寫f.close()
<a href="https://s4.51cto.com/wyfs02/M02/06/05/wKiom1mv91qTFTsJAAAoThwWTPQ728.png" target="_blank"></a>
本文轉自一百個小排 51CTO部落格,原文連結:http://blog.51cto.com/anfishr/1963269,如需轉載請自行聯系原作者