摘要:文件打開的方式有多種。讀取模式寫入模式。若文件不存在,則會(huì)創(chuàng)建文件。但是文件必須已經(jīng)存在。模式文件的讀寫是文本模式,這就意味著會(huì)把轉(zhuǎn)換成平臺(tái)相關(guān)的換行符。
現(xiàn)代的操作系統(tǒng)其實(shí)都不允許程序直接讀寫系統(tǒng)中的文件,而是程序通過請(qǐng)求系統(tǒng)打開一個(gè)文件對(duì)象,然后再對(duì)文件對(duì)象進(jìn)行讀寫。
import logging try: f = open("getAttar.py", "r") content = f.read() print content except IOError, e: logging.error(e) finally: if f: f.close()
python在申請(qǐng)打開文件對(duì)象的時(shí)候,可能會(huì)存在文件不存在的情況,則會(huì)拋出IOError需要我們捕獲處理。
文件對(duì)象一旦打開,就需要我們?nèi)リP(guān)閉它。否則其會(huì)占用系統(tǒng)資源。
文件打開的方式有多種。
open(name[, mode[, buffering]])mode:
"r": 讀取模式
"w": 寫入模式。如果文件已經(jīng)存在,則會(huì)先清空。若文件不存在,則會(huì)創(chuàng)建文件。
"a": append,添加。在unix系統(tǒng),在,a模式意味著將內(nèi)容寫入到文件末端而不管當(dāng)前的指針在哪里。
"r+": 兼具讀寫功能。但是文件必須已經(jīng)存在。而且只會(huì)覆蓋寫入的區(qū)域,而保留未被覆蓋的區(qū)域。例如文件中有“111111”六個(gè)1,用該模式寫入“000”后就變成“000111”了。
"w+":兼具讀寫功能。但是會(huì)清空文件。
模式文件的讀寫是文本模式,這就意味著會(huì)把
轉(zhuǎn)換成平臺(tái)相關(guān)的換行符。
如果需要操作二進(jìn)制文件,則需要添加模式"b"。
0: 不緩存
1: 緩存一行
其他正整數(shù):代表相應(yīng)的bytes被緩存了。
負(fù)整數(shù):系統(tǒng)默認(rèn)
我們可以使用with ... as ...這種語句替代try...finally..
with語句用于對(duì)資源進(jìn)行控制的場合。
例如:
with open("world.txt", "r") as f: for line in f: print line
需要了解更多,可以閱讀:
http://www.ibm.com/developerw...
open()打開的一個(gè)文件后返回是file-like object.除了文件file以外,還可以是內(nèi)存中的字節(jié)流,網(wǎng)絡(luò)流,自定義流等等。
StringIO創(chuàng)建的就是file-like object,常用做臨時(shí)緩沖。
Python中默認(rèn)讀取文件是以text模式讀取。讀取圖片、視頻、音頻等二進(jìn)制文件的時(shí)候,可以添加模式b代表以二進(jìn)制模式讀取。
字符編碼assci碼給英語世界常用的字符和英文字母變了個(gè)號(hào)。但是未考慮其他國家的符號(hào)。
unicode 給世界上幾乎所有的符號(hào)都編了個(gè)號(hào)碼。
utf-8是unicode的一種實(shí)現(xiàn)形式。
在python中,我們可以將讀取的字符解碼(decode)成unicode,然后將unicode編碼成制定的編碼形式。
例如
f = open("demo.txt", "r") print f.read().decode("gbk") f.close()
上述代碼中將讀取到的文本按gbk編碼方式解碼成unicode。
但是總是這么手工解碼比較麻煩,python為我們提供了codecs模塊。例如:
import codecs with codecs.open("world.txt", "rb", encoding="gbk") as f: for line in f: print line
除了上述按特定編碼格式解碼文件,然后按unicode格式存儲(chǔ)在內(nèi)存中。
我們也可以將內(nèi)存中的unicode以特定格式寫入文本。
# coding=utf-8 import codecs with codecs.open("world.txt", "rb", encoding="utf-8") as rf, codecs.open("world2.txt", "wb", encoding="gbk") as wf: wf.write(rf.read())
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/38343.html
摘要:鍵盤輸入提供了內(nèi)置函數(shù)從標(biāo)準(zhǔn)輸入讀入一行文本,默認(rèn)的標(biāo)準(zhǔn)輸入是鍵盤。可以接收一個(gè)表達(dá)式作為輸入,并將運(yùn)算結(jié)果返回。將返回該文件中包含的所有行。將寫入到文件中然后返回寫入的字符數(shù)。當(dāng)處理一個(gè)文件對(duì)象時(shí)使用關(guān)鍵字是非常好的方式。 1. 鍵盤輸入 Python提供了 input() 內(nèi)置函數(shù)從標(biāo)準(zhǔn)輸入讀入一行文本,默認(rèn)的標(biāo)準(zhǔn)輸入是鍵盤。input 可以接收一個(gè) Python 表達(dá)式作為輸入,...
摘要:可以傳入一個(gè)字符初始化。只能處理字符串類型的數(shù)據(jù),可以用于處理二進(jìn)制類型的數(shù)據(jù)。在搜索文檔的時(shí)候,發(fā)現(xiàn)在下也有一個(gè),而且兩者非常類似。 之前我們所說的都是讀寫真正的文件。其實(shí)我們也可以在內(nèi)存中虛擬一個(gè)文件進(jìn)行讀寫。Python給咱們提供的官方module有io.StringIO和io.BytesIO. io.StringIO String IO用于在內(nèi)存在讀寫字符串。StringIO可...
摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡稱是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡明扼要地說明的編碼機(jī)制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來看這樣一個(gè)提問: pyth...
摘要:本章主要是學(xué)習(xí)的文件操作,主要是從文件中讀取數(shù)據(jù)以及將數(shù)據(jù)存儲(chǔ)到文件中,還有錯(cuò)誤處理,異常類,模塊等。函數(shù)返回一個(gè)文件對(duì)象,用于接收該對(duì)象。異常中使用被稱為異常的特殊對(duì)象來管理程序執(zhí)行期間發(fā)生的錯(cuò)誤。 《Python編程:從入門到實(shí)踐》筆記。本章主要是學(xué)習(xí)Python的文件操作,主要是從文件中讀取數(shù)據(jù)以及將數(shù)據(jù)存儲(chǔ)到文件中,還有錯(cuò)誤處理,異常類,json模塊等。 1. 從文件中讀數(shù)據(jù) ...
閱讀 684·2021-11-25 09:43
閱讀 2953·2021-11-24 10:20
閱讀 1002·2021-10-27 14:18
閱讀 1076·2021-09-08 09:36
閱讀 3382·2021-07-29 14:49
閱讀 1783·2019-08-30 14:07
閱讀 2937·2019-08-29 16:52
閱讀 3049·2019-08-29 13:12