程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

自學Python 37 使用File操作文件

編輯:Python

Python 使用File操作文件


文章目錄

  • Python 使用File操作文件
  • 一、File對象介紹
  • 二、使用 close()方法關閉操作
  • 三、使用方法flush()
  • 四、使用方法fileno()
  • 五、使用方法isatty()
  • 七、使用方法 read()


在Python程序中,當使用函數open()打開一個文件後,接下來就可以使用File對象對這個文件進行操作。


一、File對象介紹

在Python程序中,當一個文件被打開後,便可以使用File對象得到這個文件的各種信息。File對象中的屬性信息如下表:

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

在Python程序中,對象File是通過內置函數實現對文件操作的,其中常用的內置函數如下表:

函數功能file.close( )關閉文件,關閉文件後不能進行讀/寫操作file.flush( )刷新文件內部緩沖,直接把內部緩沖區的數據立刻寫入文件,而不是被動的等待輸出緩存file. fileno( )返回一個整型的文件描述符(file descriptor, FD),可以用在如os模塊的read方法等一些底層操作上file.isatty( )如果文件連接到一個終端設備返回True,否則返回Falsefile.next( )返回文件下一行file.read( [size] )從文件讀取指定的字節數,如果未給定或者為負則讀取所有file.readline ( [size] )讀取整行,包括“\n”字符file.readlines( [hint] )讀取所有行並返回列表,若給定hint>0,返回總和大約為hint字節的行,實際讀取值可能比hint大,因為需要填充緩沖區file.seek(offset[,]whence )設置文件當前位置file. tell( )返回文件當前位置file.truncate( [size] )截取文件,截取的字節通過size指定,默認為當前文件位置file.write( str )將字符串寫入文件,沒有返回值file.writelines ( lines )向文件寫入一個序列字符串列表,如果需要換行則需要自己加入每行的換行符

例如下面的實例代碼中,演示了打開一個文件並查看其屬性的過程:

fo = open("英語短語","wb") #用wb格式打開指定文件“英語短語”
print("文件名:",fo.name) #顯示文件名
print("是否已關閉:",fo.closed) #顯示文件是否關閉
print("訪問模式:",fo.mode) #顯示文件的訪問格式

提示:文件可以不用寫文件的後綴名(也可以寫)。這種不加絕對路徑的用法,python程序和要打開的文件在同一個文件夾下!或者第一句寫成:fo = open("E:\python text\英語短語","wb") ”
執行後會輸出:

二、使用 close()方法關閉操作

在Python程序中,方法close( )用於關閉一個已經打開的文件,關閉後的文件不能再進行讀/寫操作,否則會觸發 ValueError錯誤。在程序中可以多次調用close()方法,當file對象被引用到操作另外一個文件時,Python 會自動關閉之前的file對象。及時使用方法關閉文件是一個好的編程習慣,使用close()方法的語法格式如下所示。

fileobject.close();

方法close()沒有參數,也沒有返回值。例如在下面的實例代碼中,演示了使用close()方法關閉文件操作的過程。

fo = open("英語短語","wb") #用 wb格式打開指定文件
print("文件名為:", fo.name) #顯示打開的文件名
fo.close() #關閉文件

在上述代碼中,使用函數 open()以“wb"的方式打開“英語短語”。然後使用 close()方法關閉文件操作,執行後會輸出:

三、使用方法flush()

在Python程序中,方法 flush()的功能是刷新緩沖區,即將緩沖區中的數據立刻寫入文件,同時清空緩沖區。在一般情況下,文件關閉後會目動刷新緩沖區,但有時需要關閉之前刷新它,這時就可以使用方法 flush()實現。使用方法 flush()的語法格式如下所示。

fileobject.flush();

和上一個方法一樣,方法flush()既沒有參數,也沒有返回值。例如在卜面的實例代碼中,演示了使用flush()方法刷新緩沖區的過程。

fo = open("暑假學習內容","wb") #用wb格式打開指定文件
print("文件名為:",fo.name) #顯示打開文件的文件名
fo.flush() #刷新緩沖區
fo.close() #關閉文件

在上述代碼中,首先使用函數open()以“wb”的方式打開了文件“暑假學習內容”,然後使用方法 flush()刷新緩沖區,最後使用方法close()關閉文件操作,執行後會輸出:

四、使用方法fileno()

在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( )關閉文件操作,執行後會輸出:,

五、使用方法isatty()

在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 的內容和程序執行後會輸出:

七、使用方法 read()

在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( )關閉文件操作。執行結果如下圖:


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved