• python学习笔记(四)-文件操作


    文件读写
    """
    一、文件打开有3种方式
    1、读 r #如果打开的文件的时候没有指定模式,那么默认是读
    读写模式 r+,只要沾上r,文件不存在的时候,打开都会报错
    2、写 w #w模式会清空原有文件内容
    写读模式 w+
    只要沾上w,他就会把文件内容清空
    3、追加 a
    追加读写
    二、文件指针
    f.seek(0)#seek移动指针的时候,只对读好使,对写不好使
    当open时文件指针是在初始位置1,当读取4个字节内容是文件指针位置就在4,再write时,文件指针从4移到8,所以,只要控制了文件指针,就能重复的读取了!
    操作文件指针可以通过seek方法:
    seek(offset, whence):移动文件指针
    offset:偏移量,可为负数
    whence:偏移相对位置

    偏移相对位置为os模块当中的SEEK_SET、SEEK_CUR、SEEK_END:
       os.SEEK_SET:表示文件的相对起始位置
    os.SEEK_CUR:表示文件的相对当前位置
    os.SEEK_END:表示文件的相对结束位置
    三、python23的区别
    file() #python2里面打开文件还可以用file()
    open() #python3
    """

    f = open('ybq.txt','a+',encoding='utf-8')
    f.seek(0)#seek移动指针的时候,只对读好使,对写不好使
    print(f.tell())#查看当前文件指针的位置
    f.truncate()#清空文件内容
    print(f.read())#读取文件里面的全部内容
    print(f.readline())#只读取一行的内容
    print(f.readlines())#读取文件里面所有的内容,把文件里面每一行的内容放到一个list里面
    f.write('mpp'+'
    ') #写入字符串
    print(f.read())
    
    names = ['ybq','mpp','tlx','ply','yjy']
    f.writelines(names) 
    st = 'ybq,mpp,tlx'
    f.writelines(st) 
    f.write(st) #只可写入不可迭代的对象,如字符串
    tu=('sdf','sdfs','sdfsd')
    f.writelines(tu) 
    d={'name':'xx'}
    f.writelines(d) #写的时候,传入一个可迭代的对象,如列表、元祖、字典
    f.close()
    
    #打开文件,通过循环向文件中写入数据
    f = open('a.txt', 'w')
    for i in range(3):
     f.write('xx'+'
    ')
    f.close()
    
    #高效处理文件的方法
    fw  = open('ybq.txt',encoding='utf-8')
    count = 1
    #直接循环文件对象的话,就是循环文件里面的每一行
    
    for f in fw:
       f = f.strip()  #去掉空、换行符
       stu_lst = f.split(',')   #按‘,’分割成列表
       print(stu_lst)

    文件指针
    实验文件data.txt如下:
    This file is data.txt
    hello world!
    My name is mark.

    文件指针初始化

    f = open('data.txt','r+')
    print f.tell() #
    f.write('nice to meet you')
    f.flush()  #flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
    print f.tell()
    print f.read()
    f.close()

    相应输出:
    //print f.tell()
    0
    //print f.tell()
    16
    //print f.read()
    a.txt
    hello world!
    My name is mark.

    说明:以’r+‘模式打开文件,文件指针所指位置为0
    f.write(‘nice to meet you’)会覆盖原文件内容,文件指针随着移动
    print f.read()只会输出剩余内容

    f = open(r'test2.txt','a+')
    print f.tell()
    f.write('nice to meet you')
    f.flush()
    print f.tell()
    print f.read()
    f.close()

    相应输出:
    //print f.tell()
    52
    //print f.tell()
    68
    //print f.read()

    说明:以’a+’模式打开,文件指针所指位置为文件尾,此例为52
    f.write(‘nice to meet you’)会在原文件内容尾添加,文件指针随着移动至68
    因为随着write()函数,文件指针已经移到文件末尾,所以print f.read()没有输出

  • 相关阅读:
    【BZOJ1345】[Baltic2007] 序列问题(单调栈大水题)
    【BZOJ2940】[POI2000] 条纹(Multi-SG)
    【BZOJ4589】Hard Nim(FWT+快速幂)
    【CF438E】The Child and Binary Tree(生成函数+多项式开根)
    【洛谷5205】【模板】多项式开根
    【BZOJ4036】[HAOI2015] 按位或(Min-Max容斥+FWT)
    【BZOJ4381】[POI2015] ODW(设阈值+倍增)
    【BZOJ3328】PYXFIB(矩乘+单位根反演)
    【BZOJ2674】Attack(整体二分+树状数组套线段树)
    单纯看懂公式的单位根反演
  • 原文地址:https://www.cnblogs.com/lincy/p/8191173.html
Copyright © 2020-2023  润新知