寫入檔案
with操作
檔案偏移量
開啟檔案
file_object =
open
(file_name, access_mode=
'r', buffering=-1
,[encoding=
'編碼方式'])
'''功能:開啟乙個檔案,返回乙個檔案物件。
引數:1. file_name : 檔名; (寫絕對/相對路徑)
2. access_mode: 開啟檔案的方式,預設為 r
3. buffering 1表示有行緩衝,預設則表示使用系統預設提供的緩衝機制。(緩衝區)
4. encoding: windows下一般為gbk,linux下一般為utf-8
返回值:成功返回檔案操作物件。
'''
文字檔案既可以用文字模式開啟,也可以用二進位制模式開啟。
如果以文字形式開啟,需以字元修改。
access_mode操作r
以讀方式開啟 檔案必須存在
w以寫方式開啟,檔案不存在則建立,存在清空原有內容
a以追加模式開啟
r+以讀寫模式開啟 檔案必須存在
w+以讀寫模式開啟檔案
a+以讀寫模式開啟 不存在則建立,存在則追加模式
以二進位制檔案開啟的檔案,需以位元組串的方式修改。
二進位制檔案必須以二進位制模式開啟,如果以文字方式開啟,讀寫時會報錯.因為不是所有的二進位制都有文字。
access_mode
操作rb
以二進位制讀模式開啟 作用同r
wb以二進位制寫模式開啟 作用同w
ab以二進位制追加模式開啟 作用同a
rb+以二進位制讀寫模式開啟 作用同r+
wb+以二進位制讀寫模式開啟 作用同w+
ab+以二進位制讀寫模式開啟 作用同a+
讀取檔案
read(
[size]
)'''
功能: 用來直接讀取檔案中字元。
引數: 如果沒有給定size引數(預設值為-1)或者size值為負,檔案將被讀取直至末尾,
給定size最多讀取 給定數目個字元(位元組)。size寫成幾就表示讀取多少個字元
太大的檔案不建議用read()
返回值: 返回讀取到的內容
'''
注意:檔案過大時候不建議直接讀取到檔案結尾,讀到檔案結尾會返回空字串。
readline(
[size]
)'''
功能: 讀取檔案中一行
引數: 如果沒有給定size引數(預設值為-1)或者size值為負,表示讀取一行,
給定size表示最多讀取指定的字元(位元組)
返回值: 返回讀取到的內容
'''
readlines(
[sizeint]
)'''
功能: 讀取檔案中的每一行,返回乙個列表,每一行為列表中的每乙個元素
引數: 如果沒有給定size引數(預設值為-1)或者size值為負,檔案將被讀取直至末尾,
給定size表示讀取到size字元所在行為止。(讀取到該字元所在的行)
返回值: 返回讀取到的內容列表
'''
檔案物件本身也是乙個可迭代物件,在for迴圈中可以迭代檔案的每一行示例在乙個程式裡面讀檔案,下次再讀都是繼續往下讀,不是從頭開始讀
#開啟檔案
#讀寫方式開啟已存在的檔案 test
f =open
('test'
,'r'
)#讀操作
#迴圈讀取檔案,每次讀取26個字元,讀到檔案結尾時返回空字串
while
true
: data = f.read(26)
#讀到檔案結尾,跳出迴圈
ifnot data:
break
print
('讀取到的資料:'
,data)
#關閉f.close(
)
寫入檔案write(string)功能: 把文字資料或二進位制資料塊的字串寫入到檔案中去
引數:要寫入的內容
返回值:寫入的字元個數
writelines(str_list)示例功能:接受乙個字串列表作為引數,將它們寫入檔案
引數: 要寫入的內容列表
'''
將乙個檔案拷貝乙份,重新取另外乙個名字
檔案可能是文字,也可能是二進位制
'''filename =
input
('檔案:'
)#以二進位制讀方式開啟,檔案需存在
fr =
open
(filename,
'rb'
)#以二進位制寫方式開啟,沒有就新建
fw =
open
('備份『+filename,'wb')
#為防止檔案特別大,迴圈讀取,一次讀1024位元組
while
true
: data = fr.read(
1024
)#讀完會返回空,跳出
ifnot data:
break
fw.write(data)
fr.close(
)fw.close(
)
with操作
with語句用於對資源進行訪問的場合,保證不管處理過程中是否發生錯誤或者異常都會執行規定的「清理」操作,釋放被訪問的資源,比如檔案讀寫後自動關閉、執行緒中鎖的自動獲取和釋放等。
語法:with context_expression [as obj]:
with
open
('file'
,'r+'
)as f:
# open得到的物件等於f,結束時with語句會自動銷毀f,所以不需要額外close
f.read(
)
檔案偏移量
1. tell()函式:獲取檔案偏移量大小
f =
open
('test'
,'w+'
)f.write(
'hello world'
)print
('偏移量:,f.tell())
#獲取檔案偏移量,列印出:偏移量:11
data = f.read(
)print
(data)
#不會列印出資料,因為檔案偏移到資料最後,後面就沒有資料了
f.close(
)
注:以r/w的方式重新開啟檔案時,檔案偏移量會重置;以a的方式重新開啟檔案時,檔案偏移量會在末尾
f =
open
('test'
,'w+'
)f.write(
'hello world'
)f.close(
)#關閉檔案
f =open
('test'
,'r'
)#重新開啟檔案
data = f.read(
)print
(data)
#此時就能讀取到資料
f.close(
)
2. seek(offset[,whence]):移動檔案偏移量位置
引數:offset代表相對於某個位置移動的位元組數,正數表示向後移動,負數表示向前移動
whence是基準位置的預設值為0,代表從檔案開頭算起,1代表從當前位置算起,2代表從檔案末尾算起(必須以二進位制開啟檔案時基準位置1或2才能使用),所以開啟使用seek()時一般以二進位制開啟
f =
open
('test'
,'w+'
)f.write(
'hello world'
)f.seek(0,
0)#以開頭為基準,移動0個位置
data1 = f.read(
)print
(data1)
#此時就可以列印出來:hello world
f.seek(5,
0)#以開頭為基準,移動5個位置
data2 = f.read(
)print
(data2)
#列印出: world
f.close(
)
f =
open
('test'
,'wb+'
)#以二進位制方式開啟
f.write(b'hello world'
)f.seek(-5
,2)#將檔案偏移量定位到開頭
data = f.read(
)print
(data)
#列印出:b'world'
f.close(
)
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後面加上...