天天看點

Python-檔案的管理

<a href="https://s5.51cto.com/wyfs02/M01/A4/C7/wKioL1mxLimxM3dZAAE1u9bLUlA591.png" target="_blank"></a>

字元的輸入及輸出

輸入(raw_input/input)---&gt; 程式處理 ---&gt; 輸出(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' 模式打開檔案即可

&gt;&gt;&gt; f = open('/root/test.jpg', 'rb')

&gt;&gt;&gt; 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,如需轉載請自行聯系原作者