python学习笔记_第20天(文件操作–IO 技术)

1544-陈同学

发表文章数:60

热门标签

,
首页 » Python » 正文

文本文件的读取

文件的读取一般使用如下三个方法:

  1. read([size])
    从文件中读取size 个字符,并作为结果返回。如果没有size参数,则读取整个文件。读取到文件末尾,会返回空字符串。
  2. readline()
    读取一行内容作为结果返回。读取到文件末尾,会返回空字符串。
  3. readlines()
    文本文件中,每一行作为一个字符串存入列表中,返回该列表
# 读取一个文件前3个字符
with open(r'c.txt', 'r', encoding='gbk') as f:
    str = f.read(3)  # 读取文件的前三个字符,英文中文都以一个字符记
    str2 = f.read()  # 从第四个字符起,读取整个文件
    print(str)
    print(str2)
# 按行读取一个文件
with open(r"c.txt", "r") as f:
    while True:  # 循环语句结构,逐行读取文件
        fragment = f.readline()
        if not fragment:  # 读取到文件末尾,会返回空字符串。not 空字符串 = not false =ture
            break
        else:
            print(fragment, end="")

# 使用迭代器(每次返回一行)读取文本文件
with open(r"c.txt", "r") as f:
    for a in f:
        print(a, end="")
# 为文本文件每一行的末尾增加行号
a = ['python/n', 'java/n', 'html/n']  # 文件读取后的存放格式
b = enumerate(a)  # 对列表元素添加索引,并用元组打包
print(a)
print(b)  # <enumerate object at 0x000001E80CDB3C78>,可迭代对象
print(list(b))  # [(0, 'python/n'), (1, 'java/n'), (2, 'html/n')],在列表中以元组形式(index,line)存放(索引值,行内容)

# 用文件代替a变量
with open("c.txt", "r", encoding="gbk") as f:
    lines = f.readlines()  # 读取文件,将每一行作为一个字符串存入列表中
    lines = [line.rstrip() + " #" + str(index + 1) + "/n" for index, line in
             enumerate(lines)]  # 列表为可变类型变量,推导式生成新列表,str.rstrip()去除右边空白符

with open("c.txt", "w", encoding="gbk") as f:
    f.writelines(lines)  # w,覆盖原文件重写