All is well 3 idiots

AC小小常

【Python函数与模块】(23)文件的读写

1. 打开文件/关闭文件

  open:f = open('test.txt')

  close:f.close()

  注意:此处需要做异常处理,文件不存在时会有异常

2. with open:利用它打开文件可以不需要关闭

  with open('test.txt') as f:

    do_something(f)

  该句到达末尾时,会自动关闭文件,无论是否异常

3. 文件读取

  read():读取文件

  readline():读取一行文件

  readlines():读取所有行,返回的是list

  seek():跳过指定字符长度,再读取文件

4. 文件写入

  write():写入一行

  writelines():写入多行

def read_file():
    """读取文件"""
    file_name = "test.txt"
    file_name2 = "test2.txt"

    # 使用绝对路径
    file_path = "F:\\Code\\Python\\Step01\Chapter02\\file_rw\\test.txt"
    file_path2 = "F:/Code/Python/Step01/Chapter02/file_rw/test.txt"

    # 使用普通方法打开文件
    f = open(file_name, encoding='utf-8')
    # f2 = open(file_name2, encoding='utf-8')

    # 读取文件内容
    print(f.read())

    # 读取指定内容:read会记录上次读取的位置,在此基础上再读8个字符
    # print(f.read(8))
    # print(f.read(8))

    # 随机读取:跳过前20个字符(注意:若是中文文件,不好使用该方法读取,会报错)
    # f2.seek(20)
    # print(f2.read(5))
    # 输出:'utf-

    # 按行读取:读一行
    # print(f.readline())
    # 输出:中国战“疫”主要采取了两大措施:

    # 读取所有行,返回list
    # print(f.readlines())
    # 输出:['一是对暴发地区进行封堵,阻断传播;\n', '二是基层群防群治,也就是联防联控。\n', '现在防控的核心也是两个,\n', '第一是保持距离,\n', '第二是戴口罩。']

    # 关闭文件
    f.close()

    # 使用with打开文件,可以不需要写关闭
    with open(file_path2, encoding='utf-8') as file:
        print(file.read())


if __name__ == "__main__":
    read_file()
from datetime import datetime
import random


def write_file():
    """写入文件"""
    file_name = "write_test.txt"

    # 以写入的方式打开文件
    f = open(file_name, 'w')
    f.write("hello")
    f.write("\n")
    f.write("world")

    # 关闭文件
    f.close()


def write_mult_file():
    """写入多行内容"""
    file_name = "write_mult_test.txt"
    with open(file_name, 'w', encoding='utf-8') as f:
        l = ["第一行", "\n", "第二行", "\r", "第三行"]
        f.writelines(l)


def write_user_log():
    """记录用户日志,使用追加的方式,w是覆盖的方式"""
    file_name = "write_user_log.txt"
    rest = "用户:{0},时间:{1}".format(random.randint(1000,9999), datetime.now())
    with open(file_name, 'a', encoding='utf-8') as f:
        f.write(rest)
        f.write("\n")


def read_and_write():
    """先读,再写"""
    file_name = "read_and_write.txt"
    with open(file_name, 'r+', encoding='utf-8') as f:
        rest = f.read()
        # 若文件中含有1 写入aaa 反之写入bbb
        if "1" in rest:
            f.write("aaa")
        else:
            f.write("bbb")
        f.write("\n")


if __name__ == "__main__":
    write_file()
    write_mult_file()
    write_user_log()
    read_and_write()

 

posted on 2020-04-13 18:00  AC小小常  阅读(246)  评论(0编辑  收藏  举报

导航