设为首页 收藏本站
查看: 818|回复: 0

[经验分享] 文件打开Python零碎知识(3):对文件的基本操作 文件打开

[复制链接]

尚未签到

发表于 2017-5-8 08:00:41 | 显示全部楼层 |阅读模式
  查了好多资料,发明还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧!
  一、概述
  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:...............对异常停止理处
  文章结束给大家分享下程序员的一些笑话语录: 一个合格的程序员是不会写出 诸如 “摧毁地球” 这样的程序的,他们会写一个函数叫 “摧毁行星”而把地球当一个参数传进去。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-374391-1-1.html 上篇帖子: 机器学习算法与Python实践之(一)k近邻(KNN) 下篇帖子: Spring MVC实现的RESTful webservice服务器并用Python调用API
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表