国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

在Python程序中進(jìn)行文件讀取和寫入操作的教程

2020-02-23 00:57:04
字體:
供稿:網(wǎng)友

讀寫文件是最常見的IO操作。Python內(nèi)置了讀寫文件的函數(shù),用法和C是兼容的。

讀寫文件前,我們先必須了解一下,在磁盤上讀寫文件的功能都是由操作系統(tǒng)提供的,現(xiàn)代操作系統(tǒng)不允許普通的程序直接操作磁盤,所以,讀寫文件就是請求操作系統(tǒng)打開一個文件對象(通常稱為文件描述符),然后,通過操作系統(tǒng)提供的接口從這個文件對象中讀取數(shù)據(jù)(讀文件),或者把數(shù)據(jù)寫入這個文件對象(寫文件)。
讀文件

要以讀文件的模式打開一個文件對象,使用Python內(nèi)置的open()函數(shù),傳入文件名和標(biāo)示符:

>>> f = open('/Users/michael/test.txt', 'r')

標(biāo)示符'r'表示讀,這樣,我們就成功地打開了一個文件。

如果文件不存在,open()函數(shù)就會拋出一個IOError的錯誤,并且給出錯誤碼和詳細(xì)的信息告訴你文件不存在:

>>> f=open('/Users/michael/notfound.txt', 'r')Traceback (most recent call last): File "<stdin>", line 1, in <module>IOError: [Errno 2] No such file or directory: '/Users/michael/notfound.txt'

如果文件打開成功,接下來,調(diào)用read()方法可以一次讀取文件的全部內(nèi)容,Python把內(nèi)容讀到內(nèi)存,用一個str對象表示:

>>> f.read()'Hello, world!'

最后一步是調(diào)用close()方法關(guān)閉文件。文件使用完畢后必須關(guān)閉,因為文件對象會占用操作系統(tǒng)的資源,并且操作系統(tǒng)同一時間能打開的文件數(shù)量也是有限的:

>>> f.close()

由于文件讀寫時都有可能產(chǎn)生IOError,一旦出錯,后面的f.close()就不會調(diào)用。所以,為了保證無論是否出錯都能正確地關(guān)閉文件,我們可以使用try ... finally來實現(xiàn):

try:  f = open('/path/to/file', 'r')  print f.read()finally:  if f:    f.close()

但是每次都這么寫實在太繁瑣,所以,Python引入了with語句來自動幫我們調(diào)用close()方法:

with open('/path/to/file', 'r') as f:  print f.read()

這和前面的try ... finally是一樣的,但是代碼更佳簡潔,并且不必調(diào)用f.close()方法。

調(diào)用read()會一次性讀取文件的全部內(nèi)容,如果文件有10G,內(nèi)存就爆了,所以,要保險起見,可以反復(fù)調(diào)用read(size)方法,每次最多讀取size個字節(jié)的內(nèi)容。另外,調(diào)用readline()可以每次讀取一行內(nèi)容,調(diào)用readlines()一次讀取所有內(nèi)容并按行返回list。因此,要根據(jù)需要決定怎么調(diào)用。

如果文件很小,read()一次性讀取最方便;如果不能確定文件大小,反復(fù)調(diào)用read(size)比較保險;如果是配置文件,調(diào)用readlines()最方便:

for line in f.readlines():  print(line.strip()) # 把末尾的'/n'刪掉            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 屯门区| 织金县| 潮州市| 会同县| 宁国市| 张家港市| 阆中市| 甘德县| 丹棱县| 漯河市| 社旗县| 孙吴县| 扶余县| 东光县| 马尔康县| 社旗县| 万山特区| 临清市| 金秀| 盐池县| 应城市| 镇康县| 顺义区| 天长市| 蒙山县| 巴马| 平泉县| 河津市| 浏阳市| 常熟市| 抚顺市| 阿鲁科尔沁旗| 明溪县| 天台县| 内黄县| 龙泉市| 克拉玛依市| 清原| 南平市| 岳池县| 贵州省|