python學習筆記——文件操作I/O

作爲入門,我們將會學習一些基本的I/O操作,如果需要其他更高級的操作可以參考官方文檔。

標準輸入輸出

也就是從屏幕讀入或者從屏幕輸出。
輸出很簡單,就是我們一直在使用的print,我就不舉例了。
輸入的話,主要是input,之前python2.x還有input_raw,但是python3已經把它刪掉了,所以我們就只說input
input的參數是我們需要顯示給用戶的提示信息。
而用戶的輸入會作爲input返回值從而被獲取。
舉個簡單的例子:

name=input("您的名字是什麼?")
print("您的名字是:",name)

打開和關閉文件

上面說了標準輸入輸出,接下來我們要開始學習對文件的讀寫了。

open函數

顧名思義,是用來打開一個文件的函數。
opne函數一共有三個參數:
第一個是我們要打開的文件的路徑
第二個是我們要打開的方式(與C語言比較類似,稍後會講解)
第三個是緩衝區大小,如果缺省或者設置爲負值會採用系統默認的緩衝區大小,如果是正數,那這個數就是緩衝區的大小,如果是0,則不緩衝。
我們先舉個例子:

fi=open("D:\\cgg.txt","r")
fi=open("D:\\cgg.txt","r"10)

下面我們來詳細說一下參數。
第一個參數沒有什麼好說的,只需要提一點,那就是如果要讀取的文件和程序在同一個路徑下,只要寫文件名即可,不需要寫出完整的路徑,否則需要寫完整。
第二個參數是用來表示這個流的性質。有的如下表:

模式 描述
t 文本模式 (默認)。
x 寫模式,新建一個文件,如果該文件已存在則會報錯。
b 二進制模式。
+ 打開一個文件進行更新(可讀可寫)。
U 通用換行模式(不推薦)。
r 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。
rb 以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。這是默認模式。一般用於非文本文件如圖片等。
r+ 打開一個文件用於讀寫。文件指針將會放在文件的開頭。
rb+ 以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。一般用於非文本文件如圖片等。
w 打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
wb 以二進制格式打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用於非文本文件如圖片等。
w+ 打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
wb+ 以二進制格式打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用於非文本文件如圖片等。
a 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
ab 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
a+ 打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。
ab+ 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用於讀寫。

當然了,你並不需要把這個背下來(除非你要考試)。
需要用的時候查一下就好了。把幾個常用的記下就好。
我們可以對上面這個表做一下簡單的整理:

模式 r r+ w w+ a a+
+ + + +
+ + + + +
創建 + + + +
覆蓋 + +
指針在開始 + + + +
指針在結尾 + +

File的屬性

我們上面的那個例子,實際上是用open創建了一個file對象,那麼file有什麼屬性呢?
file一共有四個屬性:

屬性 描述
file.closed 返回true如果文件已被關閉,否則返回false。
file.mode 返回被打開文件的訪問模式。
file.name 返回文件的名稱。

我們可以舉個例子:

fi=open("D:\\cgg.txt","r")
print(fi.closed)
print(fi.mode)
print(fi.name)

輸出結果如下:False r D:\cgg.txt(換行略去)
這三個屬性應該是比較好理解的,我就不多說了。

close方法

如字面意思,是用它關閉文件的,把緩衝區裏剩下的數據寫入內存,或者寫入硬盤。
使用也很簡單:

fi=open("D:\\cgg.txt","r")
print(fi.closed)
fi.close()
print(fi.closed)

運行結果:false true

讀寫文件

我們不可能只是打開和關閉文件,我們肯定要讀取或者寫入數據,所以我們就來學習一下讀寫的方法。

write方法

write可以將字符串寫入文件。
我們舉個例子:

fi=open("D:\\cgg.txt","w")
fi.write("cgg")
fi.close()

這裏就成功地把cgg寫入了cgg.txt

read方法

read用來從文件中讀取字符串。
它有一個可以缺省的參數,用來指定讀取的字節數。
如果缺省,它會讀儘可能多的數據,可能直到文件結束。
舉個例子:

fi=open("D:\\cgg.txt","w")
fi.write("cgg")
fi.close()
fi=open("D:\\cgg.txt","r")
gcg=fi.read()
print(gcg)

這樣我們就成功的把我們之前寫入的cgg又讀取出來了。

文件定位

我們直到,我們在打字的時候,或者說像我此時此刻在打blog一樣,我們屏幕上會閃爍着光標,來表示我們接下來的輸入的位置。讀取或寫入文件也是一樣,我們也需要直到,我們當前的”光標“在哪,甚至必要的時候對它進行必要的操作。

tell方法

tell方法可以告訴我們,我們的”光標“在距離文件開頭多少字節的位置,比如:

fi=open("D:\\cgg.txt","w")
fi.write("cgg")
print(fi.tell())
fi.close()

運行結果是3

seek方法

seek是幫助我們改變光標位置的方法。
它有兩個參數
第一個是偏移量,也就是我們要移動多少字節。
第二個是參考位置,它有三種標號,0是從文件開始處,1表示從當前位置,2表示從文件末尾。
我們舉個例子:

fi=open("D:\\cgg.txt","w")
fi.write("cgg")
fi.seek(2,0)
fi.write("ggc")
fi.close()
fi=open("D:\\cgg.txt","r")
gcg=fi.read()
print(gcg)

運行結果是::cgggc

重命名和刪除文件

對文件進行讀寫是不需要什麼模塊的,但當我們想對文件進行一些操作時,我們就需要一些模塊的幫助了。
我們今天要用的就是os模塊,它可以幫助我們重命名或刪除文件。

rename方法

rename是用來重命名的函數,它有兩個參數,一個是以前的名字,一個是要改成的名字。
我們看個例子:

import os
os.rename("D:\\cgg.txt","D:\\ggc.txt")

這樣,文件就從cgg變成了ggc

remove方法

這個方法,只有一個參數,就是要刪除的文件。
例子如下:

os.remove("D:\\ggc.txt")

這樣就ok了。

python對目錄的操作

我們除了可以操作文件,我們也可以操作文件夾。

mkdir方法

依然是在os模塊下,他只有一個參數,就是要創建的目錄的名字和路徑。
比如:

os.mkdir("D:\\cggggc")

chdir方法

這個方法是用來改變當前目錄。
什麼意思?
還記得之前我說的嗎?如果文件不在當前目錄下,就需要寫出完整的路徑
而這個方法就是用來設置當前目錄的。
比如:

os.chdir("D:\\")
os.mkdir("cggggc")

這兩個語句和上面mkdir的例子是等價的。

getcwd方法

既然有改變當前目錄的方法,肯定有獲取當前目錄的方法,這就是getcwd:

os.chdir("D:\\")
print(os.getcwd())

這個運行結果就是輸出D盤

rmdir方法

既然有了新建目錄,肯定也可以刪除。
這就是rmdir做的:

os.rmdir("cggggc")

那麼今天的學習基本就結束了,更多的方法和函數我們以後有時間再學習。

發佈了231 篇原創文章 · 獲贊 47 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章