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