本文翻譯自python3.4.8官方文件
>>> f = open('workfile
', '
w')
第乙個引數filename是檔名,第二個引數是讀寫模式,用來描述檔案的使用方式,如果省略時,預設是"r"。常用的模式有:
模式作用備註r
讀取檔案
w寫入檔案
同名的檔案將會被刪除
a向檔案末尾追加
r+讀取和寫入檔案
通常情況下,檔案以文字形式開啟,你可以從檔案中讀取和寫入字串,並以指定的編碼進行編碼,如果未指定編碼,預設值是由平台決定的(請參考open())。'b'附加到模式下表示以二進位制形式開啟檔案:資料是以位元組的形式讀取好寫入。二進位制形式應用於所有不包含文字的檔案。
在文字形式下讀取時,預設將平台的特定行結束符(unix下的\n,windows下的\r\n)轉換為\n。在文字形式下寫入時,預設將\n的看作是特定平台的行結束符。這種後台資料的修改不影響文字檔案,但會破壞像jpeg或exe檔案中的二進位制資料。在讀寫這些檔案時要謹慎的使用二進位制形式。
本節的以下例子中,假設已經建立了乙個名為f的檔案物件。
>>>f.read()'this is the entire file.
'>>>f.read()
''
>>>f.readline()'this is the first line of the file.\n
'>>>f.readline()
'second line of the file\n
'>>>f.readline()
''
為讀取檔案中的行,你可以遍歷檔案物件,這是便於記憶,執行速度快的簡單**:
>>> for line inf:...
print(line, end=''
)...
this
isthe first line of the file.
second line of the file
如果要讀取檔案中所有行,還可以使用list(f)或f.readlines()。
>>> f.write('this is a test\n')
15
要寫入乙個非字串,首先要轉換為乙個字串:
>>> value = ('the answer
', 42)
>>> s =str(value)
>>>f.write(s)
18
>>> f = open('workfile
', '
rb+'
)>>> f.write(b'
0123456789abcdef')
16>>> f.seek(5) #
go to the 6th byte in the file
5>>> f.read(1)b'
5'>>> f.seek(-3, 2) #
go to the 3rd byte before the end
13>>> f.read(1)b'
d'
在文字檔案中,只允許在檔案的開頭偏移(即from_what只允許使用預設值0),唯一有效的偏移量的值是從f.tell()返回的,或者是0。其他任何的偏移量都會產生未定義的行為。
>>>f.close()>>>f.read()
traceback (most recent call last):
file
"", line 1, in
?valueerror: i/o operation on closed file
處理檔案物件時,最好使用with關鍵字。這樣做的好處是,檔案在套件結束後,可以正常關閉,即使中途出現異常。它比編寫等價的try...finally語句塊要簡短的多。
>>> with open('workfile
', 'r'
) as f:
... read_data =f.read()
>>>f.closed
true
檔案物件還有一些其它的方法,比如不常用的isatty()和truncate(),請查閱庫文件以獲取檔案物件的完整指南。
KEIL編譯檔案
keil rvmdk編譯後的資訊 program size code 86496 ro data 9064 rw data 1452 zi data 16116 code是 占用的空間 ro data是 read only 唯讀常量的大小,如const型 rw data是 read write 初始...
Linux的編譯檔案操作
檔案程式設計的內容很多,但是重點在應用,主要關心如何用 操作檔案,實現檔案建立,開啟,編輯等自動化執行。開啟 open 讀寫 write read 游標定位 lseek 關閉 close int close int fd 引數說明 fd 是需要關閉的檔案描述符 標頭檔案 include 原型 ssi...
KEIL生成預編譯檔案
有時複雜巨集定義替換後感覺有點奇怪,有時想看看 define巨集定義替換後的怎樣,除錯程式只能看到彙編,並不能找到巨集替換中的錯誤,這時可以在keil中開啟生成預編譯檔案 在設定選單listing選項中選中c preprocessor listing 選中編譯速度會變化,不需要除錯巨集定義建議關閉 ...