Python基础语法(九)

本文详细介绍了文件操作的基本步骤,包括打开、读取、写入和关闭文件的方法。涵盖了不同访问模式下文件的读写操作,如'r'、'w'、'a'等,并解释了read()、readlines()和write()等函数的用法。同时,文章还介绍了文件指针的移动、文件和文件夹的重命名、创建和删除等操作。

1. 文件操作

1. 文件操作步骤

1. 打开

2. 读

  1. read()
    # num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。
    文件对象.read(num)
    
    # test.txt文件
    Line1
    Line2
    Line3
    Line4
    Line5
    
    # 代码示例1
    fFile = open("test.txt")
    print(fFile.read())
    fFile.close()
    
    # 输出结果
    Line1
    Line2
    Line3
    Line4
    Line5
    
    # 代码示例2 文件内容每行后面的换行符\n也算一个字节
    fFile = open("test.txt")
    print(fFile.read(15))
    fFile.close()
    
    # 输出结果
    Line1
    Line2
    Lin
    
  2. readlines():可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。
    # test.txt文件
    Line1
    Line2
    Line3
    Line4
    Line5
    
    # 代码示例
    fFile = open("test.txt")
    print(fFile.readlines())
    fFile.close()
    
    # 输出结果
    ['Line1\n', 'Line2\n', 'Line3\n', 'Line4\n', 'Line5']
    
  3. readline():一次读取一行内容。
    # test.txt文件
    Line1
    Line2
    Line3
    Line4
    Line5
    
    # 代码示例
    fFile = open("test.txt")
    print(fFile.readline(), end=", ")
    print(fFile.readline())
    fFile.close()
    
    # 输出结果
    Line1
    , Line2
    

3. 写

4. 关闭

fFile = open("test.txt", "w")
fFile.writelines("Line one")
fFile.close()

# 结果 test.txt文件内容
Line one

2. 访问模式

  1. 访问模式
    模式描述
    r以只读方式打开文件。文件的指针将会放置在文件的开头。默认模式
    rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。默认模式
    r+打开一个文件用于读写。文件指针将会放在文件的开头。
    rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
    w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开该文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的末尾。也就是说 ,新内容将会被追加到现有内容的后面,如果该文件不存在,创建新文件进行写入。
  2. seek():用来移动文件指针。
    # 起始位置:0(文件开头)、1(当前位置)、2(文件结尾)
    文件对象.seek(偏移量, 起始位置)
    

2. 文件和文件夹的操作

1. 步骤

  1. 导入os模块
    import os
    
  2. 使用os模块相关功能
    os.函数名()
    

2. 相关操作

  1. 文件或文件夹重命名
    os.rename(目标文件名, 新文件名)
    
  2. 删除文件
    os.remove(目标文件名)
    
  3. 创建文件夹
    os.mkdir(文件夹名字)
    
  4. 删除文件夹
    os.rmdir(文件夹名字)
    
  5. 获取当前目录
    os.getcwd()
    
  6. 改变默认目录
    os.chdir(目录)
    
  7. 获取目录列表
    os.listdir(目录)
    
RocketMQ 中,**分片(Sharding)** 是实现高并发、高可用和可展性的重要机制之一。其核心作用是将消息的存储和消费进行分布式管理,以支持大规模消息处理场景。 ### 分片的作用 1. **提升系统吞吐量** 通过将一个 Topic 的消息分布到多个 Broker 上,每个 Broker 负责一部分消息的存储和转发,从而实现横向展,提高整体系统的吞吐能力。 2. **支持负载均衡** 在消息生产与消费过程中,分片机制使得消息可以均匀分布在多个 Broker 上,生产者和消费者可以并行地处理多个分片,实现负载均衡[^5]。 3. **增强系统可用性与容错性** 每个分片可以配置主从结构(Master-Slave),实现数据复制与故障切换,确保在某个 Broker 故障时仍能保证消息的高可用[^4]。 ### 分片的工作机制 1. **Topic 与 Message Queue 的关系** 在 RocketMQ 中,每个 Topic 会被划分为多个 **Message Queue**(也称为队列或分片),这些队列分布在不同的 Broker 上。例如,一个 Topic 可能有 4 个队列,分别分布在两个 Broker 上,每个 Broker 管理两个队列。 2. **生产者的分片选择** 当生产者发送消息时,会根据一定的策略(如轮询、哈希等)选择一个合适的 Message Queue 进行投递。这一过程称为**生产者负载均衡**。生产者会定期从 NameServer 获取 Topic 的队列分布信息,以保证选择的准确性[^5]。 3. **消费者的分片分配** 消费者组(ConsumerGroup)中的每个消费者实例会负责一部分 Message Queue 的消费任务。这一过程称为**消费者负载均衡**,由 Broker 协调完成,确保每个队列只被一个消费者实例消费,从而避免重复消费和竞争问题。 4. **消息的物理存储** RocketMQ 将所有消息写入统一的 **CommitLog** 文件中,然后通过 **ConsumeQueue** 文件记录每个 Topic 的分片索引信息,实现逻辑分片与物理存储的分离。这种机制保证了写入的高效性和读取的灵活性[^4]。 ### 分片配置与管理 - **创建 Topic 时指定分片数量** 在创建 Topic 时,可以通过命令行或配置文件指定其分片数量(即 Message Queue 数量)。 - **动态容** 可以在不中断服务的情况下,向集群中新增 Broker,并为已有 Topic 增加分片,以应对不断增长的消息量。 ### 示例代码:查看 Topic 分片信息 ```bash # 查看 Topic 的队列分布信息 mqadmin topicRoute -n localhost:9876 -t MyTopic ``` 该命令将输出 Topic `MyTopic` 的路由信息,包括各个 Message Queue 所在的 Broker 地址。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值