• 第四章、三元运算与文件操作


    本章重点:

    1、掌握三元运算

    2、掌握文件操作的几种模式:r,r+,w,w+,rb,wb

    3、掌握文件读写、文件修改占内存和占硬盘的两种方式

    4、文件操作的常用功能

    一、三元运算

    三元运算又称三目运算,是对简单的条件语句的简写。比如:

    if 条件成立:
        val = 1
    else:
        val = 2

    可改成三元运算:

    val = 1 if 条件成立 else 2

    二、文件操作

    1、读文件

    f = open (file = "读文件", mode = "r", encoding = "utf-8")
    f.read()
    f.close()

    1-1、rb模式,二进制读

    f = open (file = "读文件", mode = "rb")
    f.read()
    f.close()

    注意,和r模式相比,不需要指定编码,因为以rb打开的是字节模式

    2、写文件w

    f = open (file = "读文件", mode = "w", encoding = "utf-8")
    f.write()
    f.close()

    2-1、wb模式、二进制写

    f = open (file = "读文件", mode = "wb")
    f.write()
    f.close()

    w和wb模式都会在写的时候把原有内容清空

    3、读写模式:写读后写 r+

    f = open (file = "读文件", mode = "r+", encoding = "utf-8")
    data = f.read()  # 可以读内容
    print(data)
    f.write("可以写内容")  
    f.close()

    4、写读模式,w+

    f = open (file = "读文件", mode = "w+", encoding = "utf-8")
    data = f.read()  # 可以读内容
    print(data)
    f.write("
    ew line")
    f.write("
    ew line")
    f.write("
    ew line")
    f.write("
    ew line")
    
    print("content",f.read())
    f.close()

    输出

        #空行,是print的结果
    content # 从这里开始,读到的是刚写入的内容
    new line
    new line
    new line
    new line

    w+会先把文件清空,再写新内容,很少用

    5、追加模式,在原有文件末尾追加内容

    f = open (file = "读文件", mode = "a", encoding = "utf-8")
    f.write()
    f.close()

     三、修改文件

    1、文件修改替换原文件(占硬盘)

    # 修改文件
    import os
    
    f_name = "文件处理"
    f_new_name = "%s.new" % f_name
    old_str = "周蓓"
    new_str = "zhoufang"
    
    f = open(f_name, mode="r", encoding="utf-8")
    f_new = open(f_new_name, "w", encoding="utf-8")
    for line in f:
        if old_str in line:
            line = line.replace(old_str, new_str)
        f_new.write(line)
    f.close()
    f_new.close()
    
    os.replace(f_new_name, f_name)
    # 会生成一个新文件,将新文件替换成原文件即可

    2、文件修改占内存的方式

    old_str = "周芳"
    new_str = "wuyi"
    f = open(file="文件处理", mode="r+", encoding="utf-8")
    data = f.read()
    f.seek(0)
    data1 = data.replace(old_str, new_str)
    f.write(data1)
    f.close()

    四、文件操作的一些常用功能

    1、f.seek()    重置光标位置

    2、f.tell()     寻找光标所在位置

    3、f.truncate()   后面的内容全部截断

    注意:所有括号内的全是字节形式,比如utf-8中,中文占3个字节,f.seek(2),就会乱码

  • 相关阅读:
    BZOJ 1202: [HNOI2005]狡猾的商人( 差分约束 )
    BZOJ 1800: [Ahoi2009]fly 飞行棋( 枚举 )
    BZOJ 2006: [NOI2010]超级钢琴( RMQ + 堆 )
    BZOJ 1029: [JSOI2007]建筑抢修( 贪心 )
    FZU 2233 ~APTX4869 贪心+并查集
    FZU2232 炉石传说 最大匹配
    FZU 2237 中位数 主席树 树上k大
    CodeForcesGym 100753B Bounty Hunter II 二分图最小路径覆盖
    NOIP2010关押罪犯 二分+二染色
    POJ2236 Wireless Network 并查集
  • 原文地址:https://www.cnblogs.com/51zf/p/9185150.html
Copyright © 2020-2023  润新知