• python学习笔记day08 文件功能详解


    file.read():读取文件的全部内容 

    file=open("dang",mode='r+',encoding='utf-8')
    print(type(file.read()))   #str对象
    file.close()

    read()函数中可以写参数,指定读取几个字符(字符:你能看到的文字最小组成单位)

    file=open("dang",mode='r+',encoding='utf-8')
    print(file.read(6))   #str对象 只读取前六个字符
    file.close()

    file.seek():移动光标的位置,读取的是字节(utf-8 一个英文字符一个字节表示;一个中文字符用三个字节表示)

    file=open("dang",mode='r+',encoding='utf-8')
    file.seek(6)  #由于seek是按照字节读的,所以读取中文时seek中的参数必须是3的倍数,由于英文一个字符用一个字节表示,所以seek参数无所谓
    print(file.read(5))
    file.close()

    运行结果:

    需要注意:

    read()函数以字符读取的,里面参数是几就代表需要读取几个字节;

    seek()函数是以字节读的,如果文件中存储的都是中文,那么seek参数必须是3的倍数,因为utf-8一个中文字符用三个字节表示;如果文件存储的都是英文,那么seek参数无所谓了,因为一个英文字符只用一个字节表示;

    file.tell()  告诉文件此时的光标在哪里,断点续传中有用;

    file=open("dang",mode='r+',encoding='utf-8')
    file.seek(4)  #因为文件存储的英文字符,seek()参数可以不是3倍数,一个英文字符用一个字节表示
    print(file.tell())  #返回光标的位置 此时应该是4 因为上面光标移动到4了
    # print(file.read(5))
    file.close()

    比如读取倒数第几个字符:

    file=open("dang",mode='r+',encoding='utf-8')
    print(file.read()) #读完之后,光标定位在最后一个位置
    index=file.tell()
    file.seek(index-6)  #由于是英文字符,所以seek(index-6) 就是从倒数第六个字符开始读;如果是中文字符的话就是从倒数第二个字符开始读
    print(file.read())  #从倒数第六个字符开始读,因为光标定位在倒数第六个字符;

    readline():仅仅读取文件的一行--->str

    file=open("dang",mode='r',encoding='utf-8')
    line=file.readline()
    print(line)
    file.close()

    我们也可以使用readline()函数一行一行读文件,迭代读取多行:

    file=open("dang",mode='r',encoding='utf-8')
    for i in range(3):
        line=file.readline().split()  #d读取每一行,然后split函数把尾部的换行符等去掉,把readline得到的str-->list
        print(line)
    file.close()

     realdines():读取文件全部内容,存成一个list,文件每一行存成list的一个元素;

    file=open("dang",mode='r+',encoding='utf-8')
    contents=file.readlines()  #读取全部内容,每一行作为list的一个元素存储
    print(contents)
    file.close()

    文件操作的另外两个小知识点:

       for line in file: 读取文件的全部内容一行一行;

    file=open('dang',mode='r',encoding='utf-8')
    for line in file:
        print(line.split())
    file.close()

    with open as 方式打开文件,不用对文件close

    之前open()打开文件,最后都得file.close() 很麻烦,现在可以这样:

    with open('dang',mode='r+',encoding='utf-8') as file:
        print(file.read())  #可以对文件file句柄进行其他操作

    并且使用with open as 可以同时打开多个文件:

    with open("dang",mode='r',encoding='utf-8') as file1,open('xixi.txt',mode='r+',encoding='utf-8') as file2:
        print(file1.read())  #读取文件dang 相对路径
        for line in file2:  #读取文件xixi.txt
            print(line.split())

    talk is cheap,show me the code
  • 相关阅读:
    2018-2019-1 20165313 20165212 20165222 实验二 固件程序设计
    2018-2019-1 20165313 20165212 2016522 实验一 开发环境的熟悉
    课程总结
    2017-2018-2 20165222 实验五《网络编程与安全》实验报告
    2017-2018-2 20165222实验四《Android程序设计》实验报告
    20165222 第十周课下补做
    20165222 实验三 敏捷开发与XP实践
    各种树
    【面试】MySQL
    Redis
  • 原文地址:https://www.cnblogs.com/xuanxuanlove/p/9530203.html
Copyright © 2020-2023  润新知