open/文件操作
f=open('/tmp/hello','w')
#open(路徑+文件名,讀寫模式)
?如何打開文件
????? handle=open(file_name,access_mode="r")
file_name 變量包含我們希望打開的文件的字符串名稱,access_mode 中的'r'表示讀取您市,‘w’表示寫入音半,'a'表示添加,其它可能用到的標(biāo)實還有‘+’表示讀寫江场,‘b’表示2進(jìn)制訪問,如果未提供access_mode,默認(rèn)為“r”.
如果open()成功窖逗,一個文件對象句柄會被返回址否。
filename=raw_input('enter?file')
fobj
=open(filename,'r')
for?eachline?infobj:
printeachline,
fobj.close()
#還記得?print?后面跟的“,”是什么意思吧碎紊,表示【每次打印都不換行佑附,而是間隔空格】
?file()內(nèi)建函數(shù)它的功能等于open(),但是可以看出,他是個文件工廠(生成文件對象)矮慕,類似于int()生成整型對象科吭,dict()生成字典對象仔沿,后面會學(xué)習(xí)
#讀寫模式:r只讀,r+讀寫,w新建(會覆蓋原有文件),a追加,b二進(jìn)制文件.常用模式
如:'rb','wb','r+b'等等
讀寫模式的類型有:
rU 或 Ua 以讀方式打開, 同時提供通用換行符支持 (PEP 278)
w?????以寫方式打開组力,
a?????以追加模式打開 (從 EOF 開始, 必要時創(chuàng)建新文件)
r+?????以讀寫模式打開
w+?????以讀寫模式打開 (參見 w )
a+?????以讀寫模式打開 (參見 a )
rb?????以二進(jìn)制讀模式打開
wb?????以二進(jìn)制寫模式打開 (參見 w )
ab?????以二進(jìn)制追加模式打開 (參見 a )
rb+????以二進(jìn)制讀寫模式打開 (參見 r+ )
wb+????以二進(jìn)制讀寫模式打開 (參見 w+ )
ab+????以二進(jìn)制讀寫模式打開 (參見 a+ )
注意:
1县貌、使用'W',文件若存在痪寻,首先要清空螺句,然后(重新)創(chuàng)建,
2橡类、使用'a'模式 蛇尚,把所有要寫入文件的數(shù)據(jù)都追加到文件的末尾,即使你使用了seek()指向文件的其他地方顾画,如果文件不存在取劫,將自動被創(chuàng)建。
f.read([size]) size未指定則返回整個文件,如果文件大小>2倍內(nèi)存則有問題.f.read()讀到文件尾時返回""(空字串)
file.readline() 返回一行
file.readline([size]) 返回包含size行的列表,size 未指定則返回全部行
for line in f: print line #通過迭代器訪問
f.write("hello\n") #如果要寫入字符串以外的數(shù)據(jù),先將他轉(zhuǎn)換為字符串.
f.tell() 返回一個整數(shù),表示當(dāng)前文件指針的位置(就是到文件頭的比特數(shù)).
f.seek(偏移量,[起始位置])
用來移動文件指針
偏移量:單位:比特,可正可負(fù)
起始位置:0-文件頭,默認(rèn)值;1-當(dāng)前位置;2-文件尾
f.close() 關(guān)閉文件
Code:
#!/usr/bin/env python
# Filename: using_file.py
poem='''\Programming is funWhen the work is doneif you wanna make your work also fun: use Python!'''
f=file('poem.txt','w') # open for 'w'riting
f.write(poem) # write text to file
f.close() # close the file
f=file('poem.txt')
# if no mode is specified, 'r'ead mode is assumed by default
while True:
line=f.readline()
if len(line)==0: # Zero length indicates EOF
break
print line,
# Notice comma to avoid automatic newline added by Python
f.close()
# close the file
read()使用及用法
我們談到“文本處理”時研侣,我們通常是指處理的內(nèi)容谱邪。Python 將文本文件的內(nèi)容讀入可以操作的字符串變量非常容易。文件對象提供了三個“讀”方法: .read()庶诡、.readline() 和 .readlines()惦银。每種方法可以接受一個變量以限制每次讀取的數(shù)據(jù)量,但它們通常不使用變量。 .read() 每次讀取整個文件扯俱,它通常用于將文件內(nèi)容放到一個字符串變量中书蚪。然而 .read() 生成文件內(nèi)容最直接的字符串表示,但對于連續(xù)的面向行的處理迅栅,它卻是不必要的殊校,并且如果文件大于可用內(nèi)存,則不可能實現(xiàn)這種處理读存。
.readline() 和 .readlines() 非常相似箩艺。它們都在類似于以下的結(jié)構(gòu)中使用:
fh = open('c:\\autoexec.bat') for linein fh.readlines(): print line
.readline() 和 .readlines() 之間的差異是后者一次讀取整個文件,象 .read() 一樣宪萄。.readlines() 自動將文件內(nèi)容分析成一個行的列表,該列表可以由 Python 的 for ... in ... 結(jié)構(gòu)進(jìn)行處理榨惰。另一方面拜英,.readline() 每次只讀取一行,通常比 .readlines() 慢得多琅催。僅當(dāng)沒有足夠內(nèi)存可以一次讀取整個文件時居凶,才應(yīng)該使用 .readline()。
seek的使用方法
seek():移動文件讀取指針到指定位置
tell():返回文件讀取指針的位置
seek()的三種模式:
??? (1)f.seek(p,0)? 移動當(dāng)文件第p個字節(jié)處藤抡,絕對位置
????(2)f.seek(p,1)? 移動到相對于當(dāng)前位置之后的p個字節(jié)
??? (3)f.seek(p,2)? 移動到相對文章尾之后的p個字節(jié)
最后:
? close – 關(guān)閉文件侠碧。跟你編輯器的 文件 -> 保存.. 一個意思。
? read – 讀取文件內(nèi)容缠黍。你可以把結(jié)果賦給一個變量弄兜。
? readline – 讀取文本文件中的一行。
? truncate – 清空文件,請小心使用該命令瓷式。
? write(stuff) – 將 stuff 寫入文件替饿。