開啟檔案時,需要指定檔案路徑和以何等方式開啟檔案,開啟後,即可獲取該檔案控制代碼,日後通過此檔案控制代碼對該檔案操作。
開啟檔案的模式有:
"+" 表示可以同時讀寫某個檔案
"b"表示以位元組的方式操作
注:以b方式開啟時,讀取到的內容是位元組型別,寫入時也需要提供位元組型別,不能指定編碼
table檔案物件方法
方法
描述
f.close()
關閉檔案,記住用open()開啟檔案後一定要記得關閉它,否則會占用系統的可開啟檔案控制代碼數。
f.fileno()
獲得檔案描述符,是乙個數字
f.flush()
重新整理輸出快取
f.isatty()
如果檔案是乙個互動終端,則返回true,否則返回false。
f.read([count])
讀出檔案,如果有count,則讀出count個位元組。
f.readline()
讀出一行資訊。
f.readlines()
讀出所有行,也就是讀出整個檔案的資訊。
f.seek(offset[,where])
把檔案指標移動到相對於where的offset位置。where為0表示檔案開始處,這是預設值 ;1表示當前位置;2表示檔案結尾。
f.tell()
獲得檔案指標位置。
f.truncate([size])
擷取檔案,使檔案的大小為size。
f.write(string)
把string字串寫入檔案。
f.writelines(list)
把list中的字串一行一行地寫入檔案,是連續寫入檔案,沒有換行。
read(3)代表讀取3個字元,其餘的檔案內游標移動是以位元組為單位,如:seek,tell,read,truncate
f.flush() #講檔案內容從記憶體刷到硬碟(python3.x)
f.closed #檔案如果關閉則返回true
f.encoding #檢視使用open開啟檔案的編碼
f.tell() #檢視檔案處理當前的游標位置
f.seek(3) #從開頭開始算,將游標移動到第三個位元組
f.truncate(10) #從開頭開始算,將檔案只保留從0-10個位元組的內容,檔案必須以寫方式開啟,但是w和w+除外。
普通讀取
f = open('lyrics
') #
開啟檔案
first_line = f.readline() #
讀取一行資訊
data = f.read()#
讀取所有內容,檔案大時不要用
print(data) #
列印檔案
f.close() #
關閉檔案
對二進位制的內容進行讀寫
f = open("yesterday2
",'wb
') #
檔案控制代碼 二進位制檔案
f.write("
hello binary\n
".encode())
f.close()
高效能讀取檔案
f=open('yesterday
','r
',encoding='
utf-8')
for line in
f
(f.strip())
f.close
f=open('yesterday2
','w
',encoding='
utf-8')
f.write(
'nihao')
f.close()
seek():移動檔案讀取指標到指定位置
語法:file.seek(offset,whence=0)
-->offset:偏移量,需要向前或向後移動的位元組數,正往結束方向移動,負往開始方向移動。
-->whence:可選值,預設為0,這意味著絕對的檔案定位,
1這意味著尋求相對於當前位置,
2表示相對於檔案的末尾。
tell():返回檔案讀取指標的位置
f = open("yesterday2
",'r
',encoding="
utf-8")
print(f.tell()) #
按字元計數
#print(f.readline()) #按字元進行讀取
#print(f.read(5)) #唯讀5個字元
(f.tell())
#回到第哪個字元
f.seek(0) #
回到第0個字元
f.seek(10) #
回到第10字元
print(f.readline())
讀取最後一行
f=open('yesterday2
','rb')
for i in
f: offs = -10
while
true:
f.seek(offs,2) #
從最後一行往前找
data = f.readlines() #
一行一行找
if len(data) > 1:
print('
檔案的最後一行是:%s
' % (data[-1]).decode('
utf-8
')) #
讀取檔案最後一行
break
offs *= 2 #
相當於兩倍檔案的內容中查詢
f.close()
說明:寫入的內容是存放在電腦的快取中的,只有flush了一下,才會儲存到硬碟中去。
#剛寫完一行內容,如果斷電,他就沒有寫進去,斷電記憶體中資料就會丟失。如果沒有斷電,資料還在記憶體的快取中,需要重新整理一下,才能寫到硬碟中。
#記憶體有乙個大小限制,需要達到這個大小,才會把記憶體快取中的內容寫到硬碟中。
進度條:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import
sys,time
for i in range(50):
sys.stdout.write("#
")sys.stdout.flush()
time.sleep(0.1)
f = open("yesterday2
",'a
',encoding="
utf-8
") #
檔案控制代碼
f.seek(10)
f.truncate(20)
with open('log','r'
) as f:
...
開啟多個
with open("yesterday2
",'r
',encoding="
utf-8
") as f ,\
open(
"yesterday2
", '
r', encoding="
utf-8
") as f2:
for line in
f:
print(line)
參考:
python 檔案操作
簡明 python 教程 中的例子,python 執行出錯,用open代替file 可以執行。poem programming is fun when the work is done if you wanna make your work also fun use python f open e ...
python檔案操作
1,將乙個路徑名分解為目錄名和檔名兩部分 a,b os.path.split c 123 456 test.txt print a print b 顯示 c 123 456 test.txt 2,分解檔名的副檔名 a,b os.path.splitext c 123 456 test.txt pri...
Python 檔案操作
1.開啟檔案 如下 f open d test.txt w 說明 第乙個引數是檔名稱,包括路徑 第二個引數是開啟的模式mode r 唯讀 預設。如果檔案不存在,則丟擲錯誤 w 只寫 如果檔案 不存在,則自動建立檔案 a 附加到檔案末尾 r 讀寫 如果需要以二進位制方式開啟檔案,需要在mode後面加上...