python3 第三十四章 - 聊聊File對象
file 對象使用 open 函數來創建,下表列出了 file 對象常用的函數:
序號 | 方法及描述 | 實例 |
---|---|---|
1 |
file.close()
方法用於關閉一個已打開的文件。關閉後的文件不能再進行讀寫操作, 否則會觸發 ValueError 錯誤。 close() 方法允許調用多次。
返回值:無 參數:無 |
#!/usr/bin/python3 |
2 |
file.flush() =========================== flush() 方法是用來刷新緩沖區的,即將緩沖區中的數據立刻寫入文件,同時清空緩沖區,不需要是被動的等待輸出緩沖區寫入。
返回值:無 參數:無 |
#!/usr/bin/python3 # 打開文件 fo = open("python.txt", "wb") print ("文件名為: ", fo.name) # 刷新緩沖區 fo.flush() # 關閉文件 fo.close() |
3 |
file.fileno()
返回值:返回文件描述符。 參數:無 |
# |
4 |
file.isatty()
返回值:如果連接到一個終端設備返回 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" 字符。
返回值:返回從字符串中讀取的字節。 參數: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])
該列表可以由 Python 的 for... in ... 結構進行處理。 如果碰到結束符 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 字節。
|
#!/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對象