1. 程式人生 > >python3 第三十四章 - 聊聊File對象

python3 第三十四章 - 聊聊File對象

python 空白 返回 next als 使用 對象 序列 其中

file 對象使用 open 函數來創建,下表列出了 file 對象常用的函數:

序號方法及描述實例
1

file.close()

關閉文件。關閉後文件不能再進行讀寫操作。

方法用於關閉一個已打開的文件。關閉後的文件不能再進行讀寫操作, 否則會觸發 ValueError 錯誤。 close() 方法允許調用多次。

當 file 對象,被引用到操作另外一個文件時,Python 會自動關閉之前的 file 對象。 使用 close() 方法關閉文件是一個好的習慣。

返回值:

參數:

#!/usr/bin/python3
# 打開文件 fo = open("python.txt", "wb") print("文件名為: ", fo.name) # 關閉文件 fo.close()
2

file.flush()

刷新文件內部緩沖,直接把內部緩沖區的數據立刻寫入文件, 而不是被動的等待輸出緩沖區寫入。

===========================

flush() 方法是用來刷新緩沖區的,即將緩沖區中的數據立刻寫入文件,同時清空緩沖區,不需要是被動的等待輸出緩沖區寫入。

一般情況下,文件關閉後會自動刷新緩沖區,但有時你需要在關閉前刷新它,這時就可以使用 flush() 方法。

返回值:

參數:

#!/usr/bin/python3

# 打開文件
fo = open("python.txt", "wb")
print ("文件名為: ", fo.name)

# 刷新緩沖區
fo.flush()

# 關閉文件
fo.close()
3

file.fileno()

返回一個整型的文件描述符(file descriptor FD 整型), 可以用在如os模塊的read方法等一些底層操作上。

返回值:返回文件描述符。

參數:無

#
!/usr/bin/python3 # 打開文件 fo = open("python.txt", "wb") print ("文件名為: ", fo.name) fid = fo.fileno() print ("文件描述符為: ", fid) # 關閉文件 fo.close()
4

file.isatty()

如果文件連接到一個終端設備返回 True,否則返回 False。

返回值:如果連接到一個終端設備返回 True,否則返回 False。

參數:

#!/usr/bin/python3

# 打開文件
fo = open("python.txt", "wb")
print ("文件名為: ", fo.name)

ret = fo.isatty()
print ("返回值 : ", ret)

# 關閉文件
fo.close()

5

file.next()

返回文件下一行。

Python 3 中的 File 對象不支持 next() 方法。 Python 3 的內置函數 next() 通過叠代器調用 __next__() 方法返回下一項。 在循環中,next()方法會在每次循環中調用,該方法返回文件的下一行,如果到達結尾(EOF),則觸發 StopIteration

返回值:返回文件下一行。

參數:

#!/usr/bin/python3

# 打開文件
fo = open("python.txt", "r")
print ("文件名為: ", fo.name)

for index in range(5):
    line = next(fo)
    print ("第 %d 行 - %s" % (index, line))

# 關閉文件
fo.close()

6

file.read([size])

從文件讀取指定的字節數,如果未給定或為負則讀取所有。

返回值:返回從字符串中讀取的字節。

參數:size -- 從文件中讀取的字節數。

#!/usr/bin/python3

# 打開文件
fo = open("python.txt", "r+")
print ("文件名為: ", fo.name)

line = fo.read(10)
print ("讀取的字符串: %s" % (line))

# 關閉文件
fo.close()

7

file.readline([size])

讀取整行,包括 "\n" 字符。

方法用於從文件讀取整行,包括 "\n" 字符。如果指定了一個非負數的參數,則返回指定大小的字節數,包括 "\n" 字符。

返回值:返回從字符串中讀取的字節。

參數:size -- 從文件中讀取的字節數。

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 打開文件
fo = open("python.txt", "r+")
print ("文件名為: ", fo.name)

line = fo.readline()
print ("讀取第一行 %s" % (line))

line = fo.readline(5)
print ("讀取的字符串為: %s" % (line))

# 關閉文件
fo.close()

8

file.readlines([sizeint])

讀取所有行並返回列表,若給定sizeint>0,返回總和大約為sizeint字節的行, 實際讀取值可能比 sizeint 較大, 因為需要填充緩沖區。

該列表可以由 Python 的 for... in ... 結構進行處理。 如果碰到結束符 EOF 則返回空字符串。

如果碰到結束符 EOF 則返回空字符串。

返回值:列表,包含所有的行。

參數:sizeint -- 從文件中讀取的字節數。

#!/usr/bin/python3
 
# 打開文件
fo = open("python.txt", "r")
print ("文件名為: ", fo.name)
 
for line in fo.readlines():                          #依次讀取每行  
    line = line.strip()                             #去掉每行頭尾空白  
    print ("讀取的數據為: %s" % (line))
 
# 關閉文件
fo.close()

9

file.seek(offset[, whence])

設置文件當前位置,用於移動文件讀取指針到指定位置。


返回值:

參數:

offset -- 開始的偏移量,也就是代表需要移動偏移的字節數

whence:可選,默認值為 0。給offset參數一個定義,表示要從哪個位置開始偏移;0代表從文件開頭開始算起,1代表從當前位置開始算起,2代表從文件末尾算起。

#!/usr/bin/python3

# 打開文件
fo = open("python.txt", "r+")
print ("文件名為: ", fo.name)

line = fo.readline()
print ("讀取的數據為: %s" % (line))

# 重新設置文件讀取指針到開頭
fo.seek(0, 0)
line = fo.readline()
print ("讀取的數據為: %s" % (line))


# 關閉文件
fo.close()

10

file.tell()

返回文件當前位置。即文件指針當前位置。

返回值:文件的當前位置。

參數:

#!/usr/bin/python3

# 打開文件
fo = open("python.txt", "r+")
print ("文件名為: ", fo.name)

line = fo.readline()
print ("讀取的數據為: %s" % (line))

# 獲取當前文件位置
pos = fo.tell()
print ("當前位置: %d" % (pos))


# 關閉文件
fo.close()

11

file.truncate([size])

從文件的首行首字符開始截斷,截斷文件為 size 個字符,無 size 表示從當前位置截斷;截斷之後 V 後面的所有字符被刪除,其中 Widnows 系統下的換行代表2個字符大小。


返回值:

參數:size -- 可選,如果存在則文件截斷為 size 字節。

#!/usr/bin/python3

fo = open("python.txt", "r+")
print ("文件名: ", fo.name)

line = fo.readline()
print ("讀取行: %s" % (line))

fo.truncate()
line = fo.readlines()
print ("讀取行: %s" % (line))

# 關閉文件
fo.close()

12

file.write(str)

將字符串寫入文件,沒有返回值。

在文件關閉前或緩沖區刷新前,字符串內容存儲在緩沖區中,這時你在文件中是看不到寫入的內容的。

返回值:

參數:str -- 要寫入文件的字符串。

#!/usr/bin/python3

# 打開文件
fo = open("python.txt", "r+")
print ("文件名: ", fo.name)

str = "text end"
# 在文件末尾寫入一行
fo.seek(0, 2)
line = fo.write( str )

# 讀取文件所有內容
fo.seek(0,0)
for index in range(6):
    line = next(fo)
    print ("文件行號 %d - %s" % (index, line))

# 關閉文件
fo.close()

13

file.writelines(sequence)

向文件寫入一個序列字符串列表,如果需要換行則要自己加入每行的換行符。

返回值:

參數:str -- 要寫入文件的字符串序列。

#!/usr/bin/python3

# 打開文件
fo = open("python.txt", "w")
print ("文件名為: ", fo.name)
seq = ["text 1\n", "text 2"]
fo.writelines( seq )

# 關閉文件
fo.close()

python3 第三十四章 - 聊聊File對象