程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python 文件操作

編輯:Python

按文件中數據的組織形式把文件分為文本文件二進制文件兩類。

文本文件:文本文件存儲的是常規字符串,由若干文本行組成,通常每行以換行符'\n'結尾。常規字符串是指記事本或其他文本編輯器能正常顯示、編輯並且人類能夠直接閱讀和理解的字符串,如英文字母、漢字、數字字符串。文本文件可以使用字處理軟件如gedit、記事本進行編輯。

二進制文件:二進制文件把對象內容以字節串(bytes)進行存儲,無法用記事本或其他普通字處理軟件直接進行編輯,通常也無法被人類直接閱讀和理解,需要使用專門的軟件進行解碼後讀取、顯示、修改或執行。常見的如圖形圖像文件、音視頻文件、可執行文件、資源文件、各種數據庫文件、各類office文檔等都屬於二進制文件 

文件基本操作

文件內容操作三步走:打開、讀寫、關閉

open(file, mode='r', buffering=-1, encoding=None, errors=None,
newline=None, closefd=True, opener=None)
file參數指定了被打開的文件名稱。
mode參數指定了打開文件後的處理方式。
buffering參數指定了讀寫文件的緩存模式。0表示不緩存,1表示緩存,如大於1則表示緩沖區的大小。默認值-1表示由系統管理緩存。
encoding參數指定對文本進行編碼和解碼的方式,只適用於文本模式,可以使用Python支持的任何格式,如GBK、utf8、CP936等等。

如果執行正常,open()函數返回1個文件對象,通過該文件對象可以對文件進行讀寫操作。

如果指定文件不存在、訪問權限不夠、磁盤空間不足或其他原因導致創建文件對象失敗則拋出異常。

f1 = open('file1.txt', 'r') # 以讀模式打開文件
f2 = open('file2.txt', 'w') # 以寫模式打開文件

當對文件內容操作完以後,一定要關閉文件對象,這樣才能保證所做的任何修改都確實被保存到文件中。

f1.close()

但是,即使寫了關閉文件的代碼,也無法保證文件一定能夠正常關閉。例如,如果在打開文件之後和關閉文件之前發生了錯誤導致程序崩潰,這時文件就無法正常關閉。在管理文件對象時推薦使用with關鍵字,可以有效地避免這個問題。

with open(filename, mode, encoding) as fp:
#這裡寫通過文件對象fp讀寫文件內容的語句

上下文管理語句with還支持下面的用法: 

with open('test.txt', 'r') as src, open('test_new.txt', 'w') as dst:
dst.write(src.read())

文件打開方式:

模式

說明

r

讀模式(默認模式,可省略),如果文件不存在則拋出異常

w

寫模式,如果文件已存在,先清空原有內容

x

寫模式,創建新文件,如果文件已存在則拋出異常

a

追加模式,不覆蓋文件中原有內容

b

二進制模式(可與其他模式組合使用)

t

文本模式(默認模式,可省略)

+

讀、寫模式(可與其他模式組合使用)

文件對象常用屬性

屬性

說明

buffer

返回當前文件的緩沖區對象

closed

判斷文件是否關閉,若文件已關閉則返回True

fileno

文件號,一般不需要太關心這個數字

mode

返回文件的打開模式

name

返回文件的名稱

例7-1 向文本文件中寫入內容,然後再讀出。
s = 'Hello world\n文本文件的讀取方法\n文本文件的寫入方法\n'
with open('sample.txt', 'w') as fp: #默認使用cp936編碼
fp.write(s)
with open('sample.txt') as fp: #默認使用cp936編碼
print(fp.read())
例7-3 讀取並顯示文本文件所有行。
with open('sample.txt') as fp: #假設文件采用CP936編碼
for line in fp: #文件對象可以直接迭代
print(line)

 


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved