在Python程序中,當使用函數open()打開一個文件後,接下來就可以使用File對象對這個文件進行操作。
在Python程序中,當一個文件被打開後,便可以使用File對象得到這個文件的各種信息。File對象中的屬性信息如下表:
在Python程序中,對象File是通過內置函數實現對文件操作的,其中常用的內置函數如下表:
例如下面的實例代碼中,演示了打開一個文件並查看其屬性的過程:
fo = open("英語短語","wb") #用wb格式打開指定文件“英語短語”
print("文件名:",fo.name) #顯示文件名
print("是否已關閉:",fo.closed) #顯示文件是否關閉
print("訪問模式:",fo.mode) #顯示文件的訪問格式
提示:文件可以不用寫文件的後綴名(也可以寫)。這種不加絕對路徑的用法,python程序和要打開的文件在同一個文件夾下!或者第一句寫成:fo = open("E:\python text\英語短語","wb") ”
執行後會輸出:
在Python程序中,方法close( )用於關閉一個已經打開的文件,關閉後的文件不能再進行讀/寫操作,否則會觸發 ValueError錯誤。在程序中可以多次調用close()方法,當file對象被引用到操作另外一個文件時,Python 會自動關閉之前的file對象。及時使用方法關閉文件是一個好的編程習慣,使用close()方法的語法格式如下所示。
fileobject.close();
方法close()沒有參數,也沒有返回值。例如在下面的實例代碼中,演示了使用close()方法關閉文件操作的過程。
fo = open("英語短語","wb") #用 wb格式打開指定文件
print("文件名為:", fo.name) #顯示打開的文件名
fo.close() #關閉文件
在上述代碼中,使用函數 open()以“wb"的方式打開“英語短語”。然後使用 close()方法關閉文件操作,執行後會輸出:
在Python程序中,方法 flush()的功能是刷新緩沖區,即將緩沖區中的數據立刻寫入文件,同時清空緩沖區。在一般情況下,文件關閉後會目動刷新緩沖區,但有時需要關閉之前刷新它,這時就可以使用方法 flush()實現。使用方法 flush()的語法格式如下所示。
fileobject.flush();
和上一個方法一樣,方法flush()既沒有參數,也沒有返回值。例如在卜面的實例代碼中,演示了使用flush()方法刷新緩沖區的過程。
fo = open("暑假學習內容","wb") #用wb格式打開指定文件
print("文件名為:",fo.name) #顯示打開文件的文件名
fo.flush() #刷新緩沖區
fo.close() #關閉文件
在上述代碼中,首先使用函數open()以“wb”的方式打開了文件“暑假學習內容”,然後使用方法 flush()刷新緩沖區,最後使用方法close()關閉文件操作,執行後會輸出:
在Python程序中,方法 fileno()的功能是返回一個整型的文件描述符可以用於底層操作系統的I/O操作。使用方法fileno()的語法格式如下所示。
fileobject.fileno ();
方法fileno()沒有參數,有返回值,只是返回一個整型文件描述符。例如在下面的實例代碼中,演示了使用方法 fileno()返回文件描述符的過程。
fo = open("暑假學習內容.txt", "wb") #用wb格式打開指定文件
print (" 文件名是: ",fo.name) #顯示打開文件的文件名
fid = fo.fileno() #返回一個整型的文件描述符
print (" 文件的描述符是: ",fid) #顯示這個文件的描述符
fo.close () #關閉文件
在上述代碼中,首先使用函數open()以“wb”的方式打開了文件“暑假學習內容.txt”,然後使用方法fileno( )返回這個文件的整型描述符,最後使用方法close( )關閉文件操作,執行後會輸出:,
在Python程序中,方法isatty()的功能是檢測某文件是否連接到一個終端設備,如果是則返回True,否則返回False。使用方法isatty()的語法格式如下所示。
fileobject.isatty();
方法iatty( )沒有參數,有返回值。如果連接到一個終端設備返回True,否則返回False。例如在下面的實例代碼中,演示了使用方法isatty()檢測文件是否連接到一個終端設備的過程。
fo = open("暑假學習內容.txt", "wb")
print (" 文件名是: ",fo. name) #顯示打開文件的文件名
ret = fo.isatty() #檢測文件是否連接到一個終端設備
print (" 返回值是:",ret) #顯示連接檢測結果
fo.close() #關閉文件
在上述代碼中,首先使用函數open( )以“wb"的方式打開了文件“暑假學習內容.txt”,然後使用方法isatty( )檢測這個文件是否連接到一個終端設備,最後使用方法close( )關閉文件操作,執行後會輸出:
六、使用方法 next()
在Python程序中,File 對象不支持方法next( )。在Python 3程序中,內置函數next( )通過迭代器調用方法__next__( )返回下一項。在循環中,方法next( )會在每次循環中調用,該方法返回文件的下一行。如果到達結尾(EOF),則觸發StopIteration異常。使用方法next( )的語法格式如下所示。
next (iteratorl[, default])
方法next( )沒有參數,有返回值,返回文件的下一行。例如在下面的實例代兩中,演示了使用方法next返回文件各行內容的過程。
fo = open("暑假學習內容.txt", "r") #用r格式打並指定文件
print ("文件名為:",fo. name) #顯示打開文件的文件名
for index in range(3):
line = next (fo) #返回文件中的各行內容
print ("第%d行---%s" % (index, line)) #顯示3行文件內容
fo.close () #關閉文件
在上述代碼中,首先使用函數open( )以“r”的方式打開了文件“暑假學習內容.txt”,然後使用方法next返回文件中的各行內容,最後使用方法 close( )關閉文件操作。文件暑假學習內容.txt 的內容和程序執行後會輸出:
在Python程序中,要想使用某個文本文件中的數據信息,首先需要將這個文件的內容讀取到內存中,既可以一次性讀取文件的全部內容,也可以按照每次一行的方式進行讀取。其中方法read( )的功能是從目標文件中讀取指定的字節數,如果沒有給定字節數或為負,則讀取所有內容。使用方法read( )的語法格式如下所示。
file,read([sizel);
上述參數“size” 表示從文件中讀取的字節數,返回值是從字符串中讀取的字節。例如在下面的實例代碼中,演示了使用方法read( )讀取文件中3個字節內容的過程。
fo = open("暑假學習內容.txt", "r+") #用r+格式打開指定文件
print ("文件名為: ", fo.name) #顯示打開文件的文件名
line = fo.read (3) #讀取文件中前三個字節的內容
print ("讀取的字符串: %s" %(line)) #顯示讀取的內容
fo.close() #關閉文件
在上述代碼中,首先使用函數open()以“r+”的方式打開了文件“暑假學習內容.txt”,然後使用方法red( )讀取了目標文件中前3個字節的內容,最後使用方法close( )關閉文件操作。執行結果如下圖: