文件讀寫(xiě)
寫(xiě)入測(cè)試文件:%%writefile test.txt
讀文件
用 open
函數(shù)或file
函數(shù),例如f = open('test.txt')
或f = file('test.txt')
file_obj=open(filename, mode='r', buffering=-1,...)
buffering為可選參數(shù),默認(rèn)為-1嗤疯,0代表不緩沖情臭,正數(shù)表示緩沖區(qū)大小爬骤。二進(jìn)制文件可以不使用緩沖披蕉,文本文件必須使用緩沖
Mode | Function | Mode | Function |
---|---|---|---|
r | 以讀模式打開(kāi) | rb | 以二進(jìn)制讀模式打開(kāi) |
w | 以寫(xiě)模式打開(kāi)(文件不存在會(huì)被創(chuàng)建,存在時(shí)清空原內(nèi)容) | wb | 以二進(jìn)制寫(xiě)模式打開(kāi)(參見(jiàn)w) |
a | 以追加模式打開(kāi)(從EOF開(kāi)始猿挚,必要時(shí)創(chuàng)建新文件) | ab | 以二進(jìn)制追加模式打開(kāi)(參見(jiàn)a) |
r+ | 以讀寫(xiě)模式打開(kāi) | rb+ | 以二進(jìn)制讀寫(xiě)模式打開(kāi)(參見(jiàn)r+) |
w+ | 以讀寫(xiě)模式打開(kāi)(清空原內(nèi)容) | wb+ | 以二進(jìn)制讀寫(xiě)模式打開(kāi)(參見(jiàn)w+) |
a+ | 以讀和追加模式打開(kāi) | ab+ | 以二進(jìn)制讀寫(xiě)模式打開(kāi)(參見(jiàn)a+) |
文件相關(guān)函數(shù)
Mode | Function |
---|---|
f.read() |
file_obj.read(size) 從文件讀出size字節(jié)數(shù)據(jù)妖爷,返回字符串蝶涩;file_obj.read(size) 接著讀文件直到文件結(jié)束,返回字符串 |
f.write() |
寫(xiě)入數(shù)據(jù) |
f.readline() |
讀取一行數(shù)據(jù) |
f.readlines() |
讀取多行數(shù)據(jù) |
f.writelines() |
寫(xiě)入多行數(shù)據(jù) |
f.close() |
關(guān)閉文件可以保證內(nèi)容已經(jīng)被寫(xiě)入文件, |
f.seek() |
在文件移動(dòng)文件指針fil_obj.seek(offset, wherence=0) 從wherence(0表示在文件頭部绿聘,1表示當(dāng)前位置暗挑,2表示文件尾部)偏移offset個(gè)字節(jié) |
例: 將文件companies.txt的字符串前加上1,2,3,...后寫(xiě)到另一個(gè)文件scompanies.txt
with open('companies.txt') as f1:
cNames=f1.readlines()
for i in range(0, len(cNames)):
cNames[i]= str(i+1) + '' +cNames[i]
with open('scompanies.txt', 'w') as f2:
f2.writelines(cNames)
因?yàn)?strong>with語(yǔ)句在執(zhí)行后會(huì)主動(dòng)關(guān)閉文件句柄,所以不用寫(xiě)入close語(yǔ)句
文件具有文件指針斜友,指針會(huì)隨著我們的操作移動(dòng)炸裆,所以有時(shí)要修改指針位置。例如:
f.writelines(s)
f.seek(0) #為了讀出寫(xiě)入的內(nèi)容鲜屏,將指針移到文件開(kāi)頭
x=f.readlines()
print(x)