python学习笔记之文件操作

一.文件读写和打开

   • Python 内置了读写文件的函数,用法和 C 是兼容的。
   • 操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(又称文件描述符),
     然后,通过操作系统提供的接口从这个文件对象操作    
   • 为引入主题可以先思考以下把大象放进冰箱的过程?
     打开冰箱-->把大象放进去--->关上冰箱 
     然后思考文件读写的过程:
     打开文件-->向文件中写入内容--->关闭文件 
   open函数的模式
     r 以读的方式打开,定位到文件开头 , 默认的 mode
     r+ 以读写的方式打开,定位文件开头 , 可以写入内容到文件
     w 以写的方式打开,打开文件的时候会清空文件的内容,并且不能读
     w+ 以读写的方式打开,定位到文件头,并且打开文件的时候也会清空文件的内容
     a 以写的方式打开,定位到文件的末尾,是一个追加的操作 , 但并不允许读
     a+ 以读写的方式打开,定位到文件的末尾,追加的方式。
     在使用以上 mode 打开文件的时候,如果增加了b 模式,表示以二进制方式打开
     *如果读取的文件是一个非文本文件,在原有模式上加b   eg:'rb' 'rb+' 'ab' 'ab+'
   1.f = open('/root/hello')
     #括号引号后如果不加任何东西,默认为以读的方式打开文件
     #如果文件不存在, open() 函数就会抛出一个 IOError 的错误,并且给出错误码和详细的信息告诉你文件不存在;
     

   2.f.read()
     #如果文件打开成功,接下来,调用 read() 方法可以一次读取文件的全部内容;
     思考:read()会一次性读取文件的全部内容,如果文件有 10G,内存就爆了,怎么解决?
   • 如果文件很小, read() 一次性读取最方便;
   • 如果不能确定文件大小,反复调用 read(size)
   • 比较保险;如果是配置文件,调用 readlines()
     #readlines()方法以列表方式返回文件信息,默认保留换行符;
     
   #read()输出的是元组形式


   #readline()方法是依次读取文件,仅返回一行文件
   3.f.writelines()可以写入多行文本内容
   

二.文件的其他操作

1.f.flush()函数,将缓冲区的内容写入到硬盘中
2.f.seek(offset[,whence]),offset 表示移动多少字节, 
    whence 为 1 的时候表示相对于当前位置移动的;当 2 的时候从文件的末尾往后移动,但不一定所有的平台都支持;
    默认为 0 表示从文件开头往后移动
    简而言之:seek(1,2)需要传两个值
        第一个参数:偏移量;>0,代表向右移动的字符;反之,向左移动的字符;
        第二个参数:0-->文件开头  1--->代表当前位置  2-->文件末尾
          
3.f.tell()函数,返回当前文件指针的偏移量:
4.fileno() 函数,返回当前的文件描述符,一个数字
5.isatty() 函数,当前打开的文件是否是一个终端设备
6.closed 属性,当前文件是否关闭 ,|True,False, f.closed
7.file 对象是一个迭代器:可进行for循环  for i in
8.next() 方法 , 一行一行的读 , 每次读取一行
9.文件的内置属性:
   #查看文件的打开模式  print f.mode
   #查看文件名  print f.name

示例如下:

三.with语法

一般情况打开一个文件,经过操作之后,都要显式的执行xx.close() 将文件关闭 .with 用于需要打开、关闭成对的操作,可以自动关闭打开对象 .
with expression as obj:# 将打开的对象赋值给 obj
     expression
                       #obj 的作用域只在 with 语句中

with open('/etc/passwd') as f1:
      print f1.read()
print f1.closed
应用练习:
       -显示文件的所有行,但忽略以#开头的行;
       -拓展:处理#不在文件开头的注释;
       -思路:打开文件-->s.strip()[0]=='#'
       -关闭文件     


把/etc/passwd文件中的‘root’字符替换为'westos',将更换后的另存为/tmp/passwd文件


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值