查了好多资料,发明还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧!
一、概述
Python内置数函open,用来打开在盘磁上的文件,并返回一个文件对象,有所对该文件的后续操纵都是通过这个"句柄"来停止的,文件法方可分:入输、出输、文件内挪动、和其他等。
1.打开文件
open 法方可以收接三个参数:文件名,模式,和缓冲区参数。只有第一个参数,文件名,是必须的;其它两个是 可选的。如果没有指定,文件以文本式方打开。
1 f=open('demo.txt','w') 2 print f.name 3 print f.demo 4 5 name性属;文件名 6 demo性属;文件以何种模式被打开
2.闭关文件
打开文件耗消系统资源, 并且依赖于文件模式, 其它程序或许不能问访它们。这就是一旦操纵终了就该闭关文件的主要在所。
1 f.close() 2 f.closed #出输True,表现文件闭关状态 3 4 #如果文件经已闭关,则可操纵打开文件的法方都不能用, 5 f.seek() 6 f.tell() 7 f.read() 8 f.close()
二、懂得读取文件
例如 我们来读取这个文件 all.py
1 ''' 2 Created on 2013-3-7 3 4 @author: Administrator 5 ''' 6 def info(object, spacing=10, collapse=1): 7 """Print methods and doc strings. 8 9 Takes module, class, list, dictionary, or string.""" 10 methodList = [method for method in dir(object) if callable(getattr(object, method))] 11 processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s) 12 print "\n".join(["%s %s" % 13 (method.ljust(spacing), 14 processFunc(str(getattr(object, method).__doc__))) 15 for method in methodList]) 16 17 if __name__ == "__main__": 18 print info.__doc__
对上述文件操纵代码如下:
1 #coding=utf-8 2 ''' 3 Created on 2013-3-7 4 5 @author: Administrator 6 ''' 7 f=open("all.py","rb") #open收接三个参数,文件名、模式、缓冲区参数 8 print f.tell() #打开文件的当前置位,因为我们还没有对该文件做任何事,故当前置位为0,表现文件的开始处 9 f.seek(10,0) #文件对象的seek法方,表现在打开文件中挪动到另一个置位 10 print f.tell() 11 tagData=f.read(10) #read 法方从打开文件中读取指定个数的字节,并且返回含有读取据数的字符串 12 print tagData 13 print f.tell() #tell 法方确认了当前置位经已挪动了 14 ------------- 15 出输如下:
0 10 ed on 2013 20
懂得:这一系列操纵好像是我们首先打开记事本时,光标立马在记事本的左上角(0)处停顿,这就对应着一开始的open之后的tell()。如果我们想要挪动光标的置位,如从一开始挪动到10个字符,我们可以用seek(10,0)表现,然后在tell(),发明光标经已定位到10了,然后从第10处开始读取10个字符,我们可以用使read(10)
三、写入文件:
Python的open法方用来打开一个文件。第一个参数是文件的置位和文件名,第二个参数是读写模式。
1.写:w (write) | a (append)
2.读:r
3.二进制(binary ): 写:wb;读:rb
1 在文件中存储和恢复Python对象 2 用使Python的pickle块模,可以将Python对象直接存储在文件中,并且可以再当前要需的时候新重恢复到内容中。 3 4 5 #coding=utf-8 6 ''' 7 Created on 2013-3-7 8 9 @author: Administrator 10 ''' 11 file=open("pickle.txt","w") 12 import pickle 13 dict={"name":"BeginMan","age":"22"} 14 pickle.dump(dict, file) 15 file.close() 16 17 test=open("pickle.txt","r") 18 print pickle.load(test) 19 test.close()
四、I/O异常理处
在对文件的操纵中以下这些可以发引IOError异常:
1.文件不存在,用使open('....','r')打开读取一个不存在的文件发引异常。
2.文件长度小于指定长度(如:n)时,用使seek(n),则发引异常
3.文件损坏,盘磁损坏时read(),发引异常
对此我们要需停止异常理处,如下:
1 try: 2 f=open('d.txt','r') 3 try: 4 f.seek(100,2) 5 fshow=f.read(1000) 6 finally: 7 f.close() 8 9 except IOError: 10 pass
第一步:打开文件时try理处
第二步:在第一步的基础上,文件操纵时try理处
第三步:一定要记取操纵成完后闭关文件,在finally中成完
最后一步:except IOError:...............对异常停止理处
文章结束给大家分享下程序员的一些笑话语录: 一个合格的程序员是不会写出 诸如 “摧毁地球” 这样的程序的,他们会写一个函数叫 “摧毁行星”而把地球当一个参数传进去。