python学习-文件操作-随机读取部分内容

代码:

#  coding : UTF-8
NAME_LENGTH = 10 # 姓名内容长度为10
READ_LENGTH = 5 # 年龄内容长度为5(其中包含换行符“\n”)
line_count = 0 # 获取年龄信息
def get_age(): # 获取年龄信息
    seek_offset = 0 # 当前偏移量
    with open(file="d:\\abc.txt") as file:
        while True: # 持续进行内容读取
            file.seek(seek_offset + NAME_LENGTH) # 读取年龄位置
            data = file.read(READ_LENGTH) # 读取数据长度
            if data: #可以获取data数据
                global line_count # 引用全局变量
                line_count +=1 # 统计的行数加1
                seek_offset = file.tell() # 修改读取偏移量
                yield int(data) # 局部返回
            else:
                return # 结束函数调用

def main(): # 主函数
    sum = 0 # 保存总年龄
    for age in get_age():
        sum = sum + age  # 保存全部年龄
    print("一共读取了%d条信息,用户平均年龄为:%3.2f" % (line_count,sum/line_count))
if __name__ == "__main__": # 判断程序执行名称
        main() # 调用主函数

代码执行结果:

一共读取了3条信息,用户平均年龄为:3.00

### Python 文本文件随机读写的教程 在 Python 中,可以通过 `open()` 函数以及一些辅助方法(如 `seek()` 和 `tell()`),实现对文本文件的随机读写功能。以下是详细的说明: #### 文件打开方式 为了支持随机读写操作,通常会使用 `"r+"` 模式打开文件。此模式允许既读又写,并保留原有内容[^3]。 ```python file = open("example.txt", "r+", encoding="utf-8") ``` #### 定位到指定位置 通过 `seek(offset, whence)` 方法可以移动文件指针的位置: - `offset`: 偏移量。 - `whence`: 起始点,默认为 0 表示从文件开头计算;1 表示相对于当前位置;2 表示从文件末尾开始计算[^5]。 例如,将文件指针移到第 10 字节处: ```python file.seek(10) ``` 或者从文件末尾向前偏移 3 字节: ```python file.seek(-3, 2) ``` #### 获取当前指针位置 利用 `tell()` 方法可获取当前文件指针的具体位置[^5]。 ```python current_position = file.tell() print(f"Current Position: {current_position}") ``` #### 随机读取部分内容 结合 `random` 模块生成随机数,配合 `seek()` 实现随机读取特定部分内容[^4]。 以下是一个完整的例子展示如何随机读取一行内容: ```python import random with open("data.txt", "r", encoding="utf-8") as file: lines = file.readlines() # 将所有行存入列表 if not lines: print("File is empty.") else: chosen_line = random.choice(lines) # 随机选取一行 print(chosen_line.strip()) ``` #### 随机写入新内容 可以在文件末尾追加新的数据,也可以覆盖某些区域内的现有数据[^1]。 追加模式下新增一条记录: ```python new_content = "\nThis is a new appended line." with open("log.txt", "a", encoding="utf-8") as log_file: log_file.write(new_content) ``` 如果要修改中间某个范围的数据,则需先调整至目标地址再执行写入动作,注意保持长度一致以免破坏后续结构[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值