zoukankan      html  css  js  c++  java
  • ①②python文件操作及文件增删改查

    Python中的文件打开模式

    文件打开模式描述
    r 以只读模式打开文件,并将文件指针指向文件头;如果文件不存在会报错
    w 以只写模式打开文件,并将文件指针指向文件头;如果文件存在则将其内容清空,如果文件不存在则创建
    a 以只追加可写模式打开文件,并将文件指针指向文件尾部;如果文件不存在则创建
    r+ 在r的基础上增加了可写功能
    w+ 在w的基础上增加了可读功能
    a+ 在a的基础上增加了可读功能
    b 读写二进制文件(默认是t,表示文本),需要与上面几种模式搭配使用,如ab,wb, ab, ab+(POSIX系统,包括Linux都会忽略该字符)

     

     pycharm新建文本文件zhuxian,内容为一首歌的歌词

    f = open("zhuxian2",'w',encoding= "utf-8")  #文件句柄
    #注意:w是创建模式write,会覆盖原文件;r是只读模式;读不能执行写,写不能执行读
    #data = f.read()
    #data2 =f.read()
    f.write("其实我很烦恼,
    ")
    f.write("只是你不知道")

    f = open("zhuxian2",'a',encoding= "utf-8")
    #a = append 追加,不能执行读
    f.write("
    如果我也不开心")
    data = f.read()
    print('-----data',data)

    f = open("zhuxian",'r',encoding= "utf-8")
    
    for i in range(5):
        #print(f.readline())    #读5行
    
    print(f.readlines())       #m每一行一个元素组成一个列表
    
    for line in f.readlines():
        print(line.strip())             #列表循环

    f = open("zhuxian",'r',encoding= "utf-8")
    #low loop低效循环,不推荐使用该方法
    for index,line in enumerate (f.readlines()):
    
        if index == 9:
            print('--------分割线-------')
            continue
        print(line.strip())

    #高效循环,推荐使用该方法
    f = open("zhuxian",'r',encoding= "utf-8") count = 0 for line in f: if count == 9: print('--------分割线-------') count += 1 continue print(line) count += 1

    f = open("zhuxian",'r',encoding= "utf-8")
    print(f.tell())     #读取文件中光标位置
    #返回结果:0 #刚开始光标在文首的位置
    print(f.readline())
    print(f.tell())
    #返回结果为24,读取一行后,光标在读取后的位置,也即读取的字符个数之后
    f.seek(0)           #光标回到文首
    print(f.readline())
    print(f.encoding)   #打印文件编码
    print(f.flush() )   #把写文件缓存刷新到硬盘
    print(f.fileno())
    print(f.name)       #打印文件名字
    print(f.isatty())   #是否为终端设备
    print(f.seekable() )#判断文件类型是否可移动光标
    print(f.readable() )#判断文件类型是否可读
    print(f.writable()) #判断文件类型是否可写
    print(f.buffer)
    print(f.closed)     #判断文件是否关闭了

    #缓冲flush的作用,进度条实例如下
    import sys,time
    
    for i in range(20):
        sys.stdout.write('#') #stdout标准输出
        sys.stdout.flush()
        time.sleep(0.1)

    f = open("zhuxian",'a',encoding= "utf-8")
    #f.seek(24)
    f.truncate(100)   #truncate 从文首开始截短,多少个字符后截短

    f = open("zhuxian",'r+',encoding= "utf-8")
    #r+,读写模式,前面有读取readlines时写追加在文件末尾,
    #直接写入则从开头开始覆盖
    print(f.readline())
    f.write("----------diao---------
    ")
    f.write("----------diao---------
    ")
    f.write("----------diao---------
    ")
    f.write("----------diao---------
    ")
    print(f.tell())
    f.seek(10)
    print(f.tell())
    print(f.readline())
    f.write("should be at the begining of the second line")
    f.close()

    f = open("zhuxian",'w+',encoding= "utf-8")
    #w+,写读模式,先创建一个文件,然后写入
    f.write("----------diao---------
    ")
    f.write("----------diao---------
    ")
    f.write("----------diao---------
    ")
    f.write("----------diao---------
    ")
    print(f.tell())
    f.seek(10)
    print(f.tell())
    print(f.readline())
    f.write("should be at the begining of the second line")
    f.close()
    f = open("zhuxian",'rb')
    #rb,二进制文件只读;3.0里网络传输只能用二进制格式;视频文件
    print(f.readline())
    print(f.readline())
    print(f.readline())'''
    
    f = open("zhuxian",'wb')
    f.write("hello world
    ".encode())
    #修改文件写入新文件,原文件不变
    f = open("zhuxian",'r',encoding= "utf-8")
    
    f_new = open("zhuxian.bak",'w',encoding= "utf-8")
    
    for line in f:
        if "这世界多么美好" in line:
            line = line.replace("这世界多么美好","这世界多么+++++++美好")
        f_new.write(line)
    f.close()
    f_new.close()
    with open("zhuxian",'r',encoding= "utf-8") as f:
        print(f.readline())
    
    
    #with语法,程序执行完后,会自动close
    
    
  • 相关阅读:
    MVC 中301永久重定向
    String
    redis key设置过期时间
    hbase java 增加列族
    hbase 物理存储
    java 类图
    SSH hql中文查询时乱码快速解决
    json和pickle的序列化与反序列化
    python之生成器与迭代器
    安装traits库心得
  • 原文地址:https://www.cnblogs.com/pengp/p/6641482.html
Copyright © 2011-2022 走看看