文件

文件的管理

标准输入输出:
输入(raw_input/input)—> 程序处理 —> 输出(print)

  • 操作系统不允许普通的程序直接操作磁盘,所以,读写文件实质是请求操作系统打开一个文件对象(文件描述符),然后,操作系统提供的接口,通过文件对象操作文件。

文件管理的三大步骤:

  • 打开文件:
    f = open(“filename”) #创建文件对象f,type(f)=file,可迭代,若文件不存在,open()函数抛出IOError
  • 处理文件:
    f.read() # 读取文件所有内容
    f.write(“hello”) # 不能往文件中写入,因为默认文件以r的模式打开;
  • 关闭并保存文件:
    f.close() #释放系统资源

文件的几种模式总结:

r模式:

若文件不存在,直接报错;
文件只能读取,不能写入;

w模式:

若文件不存在,直接创建文件;
文件只能写入,不能读取;
打开文件时会清空原有文件内容;

r+模式:

若文件不存在,直接报错;
文件可以读也可以写;
具体写入的内容在哪里,由文件指针(句柄)决定;

w+模式:

若文件不存在,直接创建文件;
文件既能写入也能读取;
打开文件时会清空原有文件内容;

a

若文件不存在,直接创建文件;
文件只能写入,不能读取;
写入的内容直接追加到文件最后;

a+

若文件不存在,直接创建文件;
文件既能写入也能读取;
写入的内容直接追加到文件最后;

b

以二进制的方式打开文件,可以跟r,w,+等组合使用;

文件的读取

  • read([size]) # 直接读取文件所有内容;
  • readline([size]) # 每次读取文件一行内容,返回类型为字符串;
    这里写图片描述
  • readlines([size]) # 读取文件所有内容,以列表形式返回;
    这里写图片描述
  • xreadlines([size]) # 类似生成器,文件内容不直接以列表方式返回;
    这里写图片描述

文件的写入

  • write(“str”) #将字符串写入文件
  • writelines(序列) #将序列的每个元素写入文件;

文件的其它操作

  • f.seek(偏移量,选项) (+|-|0,0|1|2)
    #偏移量,如果为正数,代表向右偏移;如果为负数,代表向左偏移;
    #选项,如果为0,指针指向文件开始;
    如果为1,指针指向当前位置;
    如果为2,指针指向文件末尾;
  • f.flush() # 提交对文件的修改;
  • f.tell() #返回当前文件指针的偏移量
  • f.closed属性,当前文件是否关闭
  • isatty() #是否是终端设备
  • f.name属性,文件名
  • f.mode属性,文件模式
  • f.encoding属性,默认编码时返回None

文件的几个注意点:

  • 文件对象是可迭代数据类型,可以通过for遍历文件的内容;
    判断可迭代:
    from collections import Iterable
    isinstance(f,Iterable)
    这里写图片描述
  • with open(“filename”) as obj:#将打开对象赋值给obj
    自动关闭打开对象通过这种方法来避免用户忘记关闭文件的问题;

练习题:
1. 显示文件的所有行,但忽略以#开头的行;
2. 逐页显示文本文件的程序,用户输入一个文件名,每次默认显示行数为10行,给用户一个选项,”是否继续?(Y|N)”

file=raw_input("please input filename:")
f=open(file)
count=0
while 1:
    for i in f:
       if i[0].strip()!="#":
            print i,
            count+=1

        if count>10:
            count=0
            choice=raw_input("是否继续?(Y|N)")
            if choice=="Y":
                continue
            if choice=="N":
                print "end"
                break
            else:
                print "error"
                break
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值