1. 程式人生 > >Python的open函數

Python的open函數

創建 codes 全部 strings object .sh 消失 方法 import

打開一個文件並向其寫入內容

Python的open方法用來打開一個文件。第一個參數是文件的位置和文件名稱。第二個參數是讀寫模式。這裏我們採用w模式,也就是寫模式。在這樣的模式下,文件原有的內容將會被刪除。

#to write
testFile = open(‘cainiao.txt‘,‘w‘)
#error testFile.write(u‘菜鳥寫Python!‘)
#寫入一個字符串
testFile.write(‘菜鳥寫Python!‘)
#字符串元組
codeStr = (‘<div>‘,‘<p>‘,‘全然沒有必要啊!

‘,‘

‘,‘

‘)
testFile.write(‘\n\n‘)
#將字符串元組按行寫入文件
testFile.writelines(codeStr)
#關閉文件。


testFile.close()向文件加入內容

在open的時候制定‘a‘即為(append)模式,在這樣的模式下,文件的原有內容不會消失,新寫入的內容會自己主動被加入到文件的末尾。

#to append
testFile = open(‘cainiao.txt‘,‘a‘)
testFile.write(‘\n\n‘)
testFile.close()讀文件內容

在open的時候制定‘r‘即為讀取模式。使用

#to read
testFile = open(‘cainiao.txt‘,‘r‘)
testStr = testFile.readline()
print testStr
testStr = testFile.read()
print testStr
testFile.close()在文件裏存儲和恢復Python對象

使用Python的pickle模塊。能夠將Python對象直接存儲在文件裏,而且能夠再以後須要的時候又一次恢復到內容中。

testFile = open(‘pickle.txt‘,‘w‘)
#and import pickle
import pickle

testDict = {‘name‘:‘Chen Zhe‘,‘gender‘:‘male‘}
pickle.dump(testDict,testFile)
testFile.close()
testFile = open(‘pickle.txt‘,‘r‘)
print pickle.load(testFile)
testFile.close()二進制模式

調用open函數的時候。在模式的字符串中使用加入一個b即為二進制模式。

#binary mode
testFile = open(‘cainiao.txt‘,‘wb‘)
#where wb means write and in binary
import struct
bytes = struct.pack(‘>i4sh‘,100,‘string‘,250)
testFile.write(bytes)
testFile.close()

讀取二進制文件。

testFile = open(‘cainiao.txt‘,‘rb‘)
data = testFile.read()
values = struct.unpack(‘>i4sh‘,data)
print values1.open使用open打開文件後一定要記得調用文件對象的close()方法。

比方能夠用try/finally語句來確保最後能關閉文件。
file_object = open(‘thefile.txt‘)
try:

all_the_text = file_object.read( )

finally:

file_object.close( )

註:不能把open語句放在try塊裏。由於當打開文件出現異常時,文件對象file_object無法運行close()方法。
2.讀文件讀文本文件 input = open(data, r)
#第二個參數默覺得r
input = open(data)

讀二進制文件 input = open(data, rb)
讀取全部內容 file_object = open(thefile.txt)
try:
all_the_text
= file_object.read( )
finally:
file_object.close( )

讀固定字節 file_object = open(abinfile, rb)
try:
while True:
chunk
= file_object.read(100)
if not chunk:
break
do_something_with(chunk)
finally:
file_object.close( )

讀每行 list_of_all_the_lines = file_object.readlines( )
假設文件是文本文件,還能夠直接遍歷文件對象獲取每行:
for line in file_object:
process line

3.寫文件寫文本文件 output = open(data, w)
寫二進制文件 output = open(data, wb)
追加寫文件 output = open(data, w )
寫數據 file_object = open(thefile.txt, w)
file_object.write(all_the_text)
file_object.close( )

寫入多行 file_object.writelines(list_of_text_strings)
註意。調用writelines寫入多行在性能上會比使用write一次性寫入要高。





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

rU 或 Ua 以讀方式打開, 同一時候提供通用換行符支持 (PEP 278)
w 以寫方式打開 (必要時清空)
a 以追加模式打開 (從 EOF 開始, 必要時創建新文件)
r 以讀寫模式打開
w 以讀寫模式打開 (參見 w )
a 以讀寫模式打開 (參見 a )
rb 以二進制讀模式打開
wb 以二進制寫模式打開 (參見 w )
ab 以二進制追加模式打開 (參見 a )
rb 以二進制讀寫模式打開 (參見 r )
wb 以二進制讀寫模式打開 (參見 w )
ab 以二進制讀寫模式打開 (參見 a )

a. Python 2.3 中新增

http://www.360doc.com/content/14/0425/12/16044571_372066859.shtml

Python的open函數