python——文件的打開及其常用方法

打開文件

1,在Python中,是用open()打開文件并返回文件對(duì)象的

## open() 語法格式
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
## 參數(shù)太多? 沒關(guān)系 ,我們只要關(guān)注第1 ,2 ,4就行
fi = open("E:\\python\\text.txt" , "r" , enconding = "UTF-8")
fi.close()

這里注意一點(diǎn):假如文件存在當(dāng)前目錄下,就可以直接寫文件,否則要把文件的絕對(duì)路徑寫全。并且打開文件之后一定記得關(guān)閉文件?。。?!

2,文件打開的方式(或者理解為賦予對(duì)文件的權(quán)限),即第二個(gè)參數(shù)mode對(duì)應(yīng)的value

打開模式 執(zhí)行操作
"r" 以只讀的方式打開文件(默認(rèn))
"w" 寫入的方式打開文件,會(huì)覆蓋已有的文件,一定小心!
"x" 如果文件存在,使用此模式打開會(huì)報(bào)錯(cuò)
"a" 寫入的方式打開文件,若文件已存在,則在末尾追加寫入
"b" 二進(jìn)制的方式打開文件
"t" 文本模式打開文件(默認(rèn))
"+" 添加在其他模式中,賦予讀寫的權(quán)利
"U" 通用換行符支持

3,文件對(duì)象的方法

? 當(dāng)我們是用open 函數(shù)打開文件時(shí) ,返回的是文件對(duì)象

>>>  fi = open("/home/luohg/software/text.txt" ,"r",encoding = "UTF-8")
>>>  fi
<_io.TextIOWrapper name='/home/luohg/software/text.txt' mode='r' encoding='UTF-8'>

所以要對(duì)文件執(zhí)行進(jìn)一步操作,就需要用文件對(duì)象的一些方法對(duì)文件進(jìn)行讀取或修改等操作。

文件對(duì)象的方法 執(zhí)行操作
close() 關(guān)閉文件
read(size = -1) 從文件開頭讀取size個(gè)字符,當(dāng)未給定size時(shí),讀取所有字符,然后作為字符串返回
readline() 從文件中讀取一行
readlines() 讀取所有行,比較耗內(nèi)存
write(str) 將字符串str寫入文件
writelines(seq) 向文件寫入字符串序列seq,seq是一個(gè)返回字符串的迭代對(duì)象
seek(offset , from) 調(diào)節(jié)文件指針,從from(0,表示起始位置,1表示當(dāng)前位置,2表示末尾)偏移offset個(gè)字節(jié)
tell() 返回當(dāng)前在文件中的位置(即文件指針)

個(gè)人理解:在Python中對(duì)文件的讀取其實(shí)跟我們平時(shí)用Word差不多,文件指針就是閃爍的小豎杠,而tell()和seek()函數(shù)就是對(duì)小豎杠的調(diào)節(jié)。

>>> fi = open("/home/luohg/software/text.txt" ,"r",encoding = "UTF-8")
>>> fi.read()
'人生苦短,我用Python!\n我有一頭小毛驢,我從來也不騎'
>>> fi.read()
''
>>> fi.tell()
29

? 我們發(fā)現(xiàn),fi.read()打印出文件內(nèi)容后,此時(shí)再執(zhí)行一次fi.read就不會(huì)打印任何內(nèi)容,這就是因?yàn)槲募羔槾藭r(shí)在文件末尾。tell()函數(shù)告訴我們,此時(shí)在第29個(gè)字符(一個(gè)漢字等于兩個(gè)字符)

>>> fi = open("/home/luohg/software/text.txt" ,"r",encoding = "UTF-8")
>>> fi.read()
'人生苦短,我用Python!\n我有一頭小毛驢,我從來也不騎'
>>> fi.seek(0,0)
0
>>> fi.read()
'人生苦短,我用Python!\n我有一頭小毛驢,我從來也不騎'

? 當(dāng)我們用seek函數(shù)將文件指針調(diào)回起點(diǎn)時(shí),就又可以打印出來內(nèi)容了.

? readline()用于讀取一行,即從文件指針向后讀,直到遇到換行符(\n結(jié)束)

>>> fi.readline()
'人生苦短,我用Python!\n'
## 前面說了列表的功能很強(qiáng)大,所以我們也可以把文件轉(zhuǎn)化成列表的格式
>>> fi.seek(0,0)
0
>>> list(fi)
['人生苦短,我用Python!\n', '我有一頭小毛驢,我從來也不騎']
## 假如迭代讀取每一行,我們可以直接使用文件對(duì)象本身,因?yàn)槠浔旧砭椭С值?fi.seek(0,0)
for each_line in fi :
    print(each_line)

4 , 文件的寫入

? 如若需要寫入文件,請(qǐng)確保之前打開模式由"w"或"a",否則會(huì)報(bào)錯(cuò)

fi = open("/home/luohg/software/text.txt" ,"w",encoding = "UTF-8")
fi.write("請(qǐng)把我加上吧!")

? 注意:使用"w"模式寫入文件,此前文件的內(nèi)容會(huì)全部刪除,若想在原來的基礎(chǔ)上添加內(nèi)容,一定要使用"a"模式!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • PHP常用函數(shù)大全 usleep() 函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解...
    上街買菜丶迷倒老太閱讀 1,509評(píng)論 0 20
  • 總結(jié)了一些開發(fā)中常用的函數(shù): usleep() //函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() //函數(shù)從二進(jìn)制...
    ADL2022閱讀 556評(píng)論 0 3
  • 文件IO常用操作 一般說IO操作,指的是文件IO,如果指的是網(wǎng)絡(luò)IO,會(huì)直接說。 把文件存儲(chǔ)到磁盤上的這個(gè)過程,叫...
    vampire6閱讀 1,143評(píng)論 0 0
  • 五、IO流 1、IO流概述 (1)用來處理設(shè)備(硬盤,控制臺(tái),內(nèi)存)間的數(shù)據(jù)。(2)java中對(duì)數(shù)據(jù)的操作都是通過...
    佘大將軍閱讀 587評(píng)論 0 0
  • 突出主題拿高分 我的老公是名語文老師,昨天他們學(xué)校剛剛月考完,他負(fù)責(zé)審閱作文。 當(dāng)年我們高考的時(shí)候老師就曾說過,高...
    迦陵雜談閱讀 210評(píng)論 0 1

友情鏈接更多精彩內(nèi)容