1三個(gè),0代表buffer關(guān)閉(只適用于二進(jìn)制模式),1代表linebuffer(只適用于文本模式),>1表示初始化的buff" />

黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Python open()文件處理使用介紹

系統(tǒng) 2524 0

1. open()語(yǔ)法

open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=True]]]]]])
open函數(shù)有很多的參數(shù),常用的是file,mode和encoding
file 文件位置,需要加引號(hào)
mode 文件打開(kāi)模式,見(jiàn)下面3
buffering 的可取值有0,1,>1三個(gè),0代表buffer關(guān)閉(只適用于二進(jìn)制模式),1代表line buffer(只適用于文本模式),>1表示初始化的buffer大小;
encoding 表示的是返回的數(shù)據(jù)采用何種編碼,一般采用utf8或者gbk;
errors 的取值一般有strict,ignore,當(dāng)取strict的時(shí)候,字符編碼出現(xiàn)問(wèn)題的時(shí)候,會(huì)報(bào)錯(cuò),當(dāng)取ignore的時(shí)候,編碼出現(xiàn)問(wèn)題,程序會(huì)忽略而過(guò),繼續(xù)執(zhí)行下面的程序。
newline 可以取的值有None, \n, \r, ”, ‘\r\n',用于區(qū)分換行符,但是這個(gè)參數(shù)只對(duì)文本模式有效;
closefd 的取值,是與傳入的文件參數(shù)有關(guān),默認(rèn)情況下為T(mén)rue,傳入的file參數(shù)為文件的文件名,取值為False的時(shí)候,file只能是文件描述符,什么是文件描述符,就是一個(gè)非負(fù)整數(shù),在Unix內(nèi)核的系統(tǒng)中,打開(kāi)一個(gè)文件,便會(huì)返回一個(gè)文件描述符。

2. Python 中file()與open()區(qū)別
兩者都能夠打開(kāi)文件,對(duì)文件進(jìn)行操作,也具有相似的用法和參數(shù),但是,這兩種文件打開(kāi)方式有本質(zhì)的區(qū)別, file為文件類(lèi) ,用file()來(lái)打開(kāi)文件 ,相當(dāng)于這是在構(gòu)造文件類(lèi),而用open()打開(kāi)文件,是用 python的內(nèi)建函數(shù)來(lái)操作 ,建議使用open

3. 參數(shù)mode的基本取值

Character Meaning
‘r' open for reading (default)
‘w' open for writing, truncating the file first
‘a(chǎn)' open for writing, appending to the end of the file if it exists
‘b' binary mode
‘t' text mode (default)
‘+' open a disk file for updating (reading and writing)
‘U' universal newline mode (for backwards compatibility; should not be used in new code)

r、w、a為打開(kāi)文件的基本模式,對(duì)應(yīng)著只讀、只寫(xiě)、追加模式;
b、t、+、U這四個(gè)字符,與以上的文件打開(kāi)模式組合使用,二進(jìn)制模式,文本模式,讀寫(xiě)模式、通用換行符,根據(jù)實(shí)際情況組合使用、

常見(jiàn)的mode取值組合

          
r或rt 默認(rèn)模式,文本模式讀
rb   二進(jìn)制文件
 
w或wt 文本模式寫(xiě),打開(kāi)前文件存儲(chǔ)被清空
wb  二進(jìn)制寫(xiě),文件存儲(chǔ)同樣被清空
 
a  追加模式,只能寫(xiě)在文件末尾
a+ 可讀寫(xiě)模式,寫(xiě)只能寫(xiě)在文件末尾
 
w+ 可讀寫(xiě),與a+的區(qū)別是要清空文件內(nèi)容
r+ 可讀寫(xiě),與a+的區(qū)別是可以寫(xiě)到文件任何位置
        

4. 測(cè)試
測(cè)試文件test.txt,內(nèi)容如下:

          
Hello,Python
www.jb51.net
This is a test file
        

用一小段代碼來(lái)測(cè)試寫(xiě)入文件直觀的顯示它們的不同

          
test = [ "test1\n", "test2\n", "test3\n" ]
f = open("test.txt", "a+")
try:
 #f.seek(0)
 for l in test:
  f.write(l)
finally:
 f.close()
        

a+、w+和r+模式的區(qū)別 (測(cè)試后還原test.txt)
a+模式

          
# cat test.txt
Hello, Python
www.jb51.net
This is a test file
test1
test2
test3

        

w+模式

          
# cat test.txt
test1
test2
test3
        

r+模式
在寫(xiě)入文件前,我們?cè)谏厦婺嵌未a中加上一句f.seek(0),用來(lái)定位寫(xiě)入文件寫(xiě)入位置(文件開(kāi)頭),直接覆蓋字符數(shù)(注意\n也是一個(gè)字符)

          
# cat test.txt
test1
test2
test3
inuxeye.com
This is a test file
        

注意:r+模式打開(kāi)文件時(shí),此文件必須存在,否則就會(huì)報(bào)錯(cuò),‘r'模式也如此
其他測(cè)試

          
>>> f = open('test.txt')
>>> f.read() #讀取整個(gè)文件,字符串顯示
'Hello,Python\nwww.jb51.net\nThis is a test file\n'
>>> f.read() #指針在文件末尾,不能再讀取內(nèi)容
''
        
          
>>> f = open('test.txt')
>>> f.readline() #一次讀一行,指針在該行末尾
'Hello,Python\n'
>>> f.tell() #改行的字符長(zhǎng)度
13
>>> f.readline()
'www.jb51.net\n'
>>> f.tell()
30
>>> f.readline()
'This is a test file\n'
>>> f.tell()
50
>>> f.readline()
''
>>> f.tell() #指針停在最后一行
50
        
          
>>> f = open('test.txt')
>>> f.readlines() #讀取整個(gè)文件,以列表顯示
['Hello,Python\n', 'www.jb51.net\n', 'This is a test file\n']
>>> f.tell() #指針在最后一行
50
        
          
>>> f = open('test.txt','w') #覆蓋創(chuàng)建新文件
>>> f.write('Hello,Python!') #如果寫(xiě)入內(nèi)容小于1024,會(huì)存在內(nèi)存,否則需要刷新
>>> f.flush() #寫(xiě)入到硬盤(pán)
>>> f.close() #關(guān)閉文件會(huì)自動(dòng)刷新
>>> f.write('Hello,Linuxeye') #關(guān)閉后,寫(xiě)失敗,提示文件已經(jīng)關(guān)閉
Traceback (most recent call last):
 File "
          
            ", line 1, in 
            
              
ValueError: I/O operation on closed file 
            
          
        

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論