Python readline() 和 readlines()

文摘   科技   2024-10-25 08:08   上海  

点击蓝字,关注山海摸鱼人

目录:

  1. Python readline() 函数
  2. Python readlines() 函数
  3. 限制读取大小
  4. 实际应用场景

首先,我们需要一个示例文件 shanhai_moyuren.txt,假设其内容如下:

摸鱼山海
readline函数

Python readline() 函数

readline() 函数用于每次读取文件中的一行。如果省略参数,则读取到行尾的换行符 \n。如果有参数,则指定读取的最大字符数。

代码示例

# 打开文件
with open('shanhai_moyuren.txt''r', encoding='utf-8'as f:
    # 读取第一行
    line = f.readline()
    print(line)  # 输出结果:Python教程\n

    # 再读取第二行
    line = f.readline()
    print(line)  # 输出结果:readline函数

    print('-----')
    # 尝试读取第三行(此时文件指针位于文件末尾)
    line = f.readline()
    print(line)  # 输出结果:空字符串''

解释

  • with open('shanhai_moyuren.txt', 'r', encoding='utf-8') as f: 使用 with 语句自动管理文件的打开和关闭。
  • f.readline() 读取一行,包括行尾的换行符(如有)。
  • 当文件读取完毕后,再次调用 readline() 返回空字符串。

Python readlines() 函数

readlines() 函数用于一次性读取文件中的所有行,并将每行作为一个元素存入列表中返回。

代码示例

# 打开文件并一次性读取所有行
with open('shanhai_moyuren.txt''r', encoding='utf-8'as f:
    lines = f.readlines()

    # 遍历所有行
    for line in lines:
        print(line)  # 输出结果:摸鱼山海\nreadline函数

解释

  • f.readlines() 一次性读取所有行,返回一个列表。
  • 列表中的每个元素都是文件中的一行,包括行尾的换行符(如有)。

限制读取大小

在某些情况下,我们需要限制每次读取的最大字符(字节)数,这时可以用 readline() 的参数来实现。如果文件以文本模式打开,则按字符读取;如果文件以二进制模式打开,则按字节数读取。

# 限制每次读取的字符数
with open('shanhai_moyuren.txt''r', encoding='utf-8'as f:
    while True:
        line = f.readline(3)  # 每次读取最多3个字符
        if not line:
            break
        print(line)  # 输出可能不完整的一行

解释

  • f.readline(3) 限制每次读取最多3个字符。
  • 如果读取的字符不足3个,则读取到行尾。
  • 当文件读取完毕时,readline() 返回空字符串,跳出循环。

实际应用场景

在处理大量日志文件或需要逐行处理文件内容时,readline()readlines() 都非常有用。例如,在分析网站访问日志时,我们可以逐行读取并处理每一条记录。

扩展示例

# 假设日志文件 log.txt 包含多条访问记录
with open('log.txt''r', encoding='utf-8'as log_file:
    # 使用 readlines() 获取所有行
    lines = log_file.readlines()
    
    # 计算特定用户访问次数
    user_visits = {}
    for line in lines:
        parts = line.strip().split()  # 分割每行数据
        user = parts[0]  # 假设用户ID在每行的第一个位置
        if user in user_visits:
            user_visits[user] += 1
        else:
            user_visits[user] = 1
            
    # 输出结果
    for user, visits in user_visits.items():
        print(f'{user} 访问了 {visits} 次')

解释

  • 使用 readlines() 一次性读取所有行,并分割每行数据。
  • 统计每个用户的访问次数。
  • 输出统计结果。

山海摸鱼人
致力于记录美好之瞬间,追寻美好之明天。
 最新文章