python程序 简单的断点续接 实现

文章介绍了一种使用Python内置的open函数而非configparser模块来写入配置文件的方法,以实现程序意外中断后的断点续接功能。通过建立多个配置文件,如Settings1.ini和Settings.ini,记录执行序号,当程序重启时,可以从上次停止的位置继续执行。这种方法适用于需要在特定状态恢复的程序,文章提供了详细的代码示例来说明其工作原理。
摘要由CSDN通过智能技术生成

我没有 选择  configparser 模块去写入配置文件 选择用的 python 自带 open 写入 configparser自带写入 注释 看着比较难受  不习惯  本次选择 open 写入  根据个人喜好 选择都能实现 写入功能

需求 在程序运行中以外停止 在次启动程序 需要在上次停止位置开始启动

比如 一个程序有三层10-10-10   

当程序 在3-4-6 的时候意外程序崩溃 再起启动需要从0-0-0开始 

现在需要启动时候在 3-4-6 的时候启动 不是在从0-0-0开始

先看下示例图 第一次运行 第一配置文件 断点续接 1 表示开启 

 第一次 都是0-0-0位置

 运行结果 0-0-0开始

 运行结果 都是从0-0-0开始 现在 要他从3-4-6开始

配置文件 更改为 3-4-6

 运行结果 成功实现

启动文件

'''
断点续接 比较娄的一个小方案
需要 建四个文件 Settings1.ini 断点续接开关  Settings.ini 配置文件   Settings.py 配置文件 和 main.py 启动文件
Settings1.ini 断点续接开关 不动的
Settings.ini 放 断点序号 动态 记录 每次执行序号 注意动态 执行的序号要和 静态的配置文件 分开 避免 设置混乱导致程序崩溃
Settings.py 放 程序 一些其他的需要的 库 和函数 需要用的代码
main.py 用于启动程序 和启动程序的逻辑代码
需求 在程序 终止意外断开的 位置 重现启动
for i in range(100): 循环在到20的位置 程序意外 停止  需要在启动 要在 20位置 重现启动
适合单文件  一个大文件 不适合这个方案 ,W 模式下写入文件 会清空 之前写入  单个大文件 需要作进一步 判断
比如 在20的位置 停止  防止 20 写入的错误 跳过 20 , 需要在20的位置 重新写入 20号文件 在往后走
方案 用 ini 配置文件 来完成 用其他的也可以  个人喜欢用 ini 配置文件  根据个人喜好和习惯
'''
# 导入py配置文件 * 代表导出全部包括变量  会有 变量重名 的风险  需要注意
from Settings import *


# # 或者分开导入比较好自行选择 我采用 * 的方式
# from Settings import cfg
def Start_up():
    # 记录序号
    n = 0
    # 初始值 大写 是默认常量 Python 特性没有常量
    N = 0
    # cfg.get 读出 是字符串 cfg.getint 读取是int数字 py 特性 int判断 是 0 False 1 True 不是空字符 都是 True
    if cfg.getint("Switch", "judgment"):
        # 读取配置文件信息
        N = cfg.getint("judgment", "n")
    print(f"n是{N}开始")
    for i in range(10):
        if n >= N:
            print(i)
        # 记录序号
        x = 0
        # 初始值 大写 是默认常量 Python 特性没有常量
        X = 0
        if cfg.getint("Switch", "judgment"):
            X = cfg.getint("judgment", "x")
        print(f"x是{X}开始")
        for j in range(10):
            if x >= X:
                print(j)
            # 记录序号
            y = 0
            # 初始值 大写 是默认常量 Python 特性没有常量
            Y = 0
            if cfg.getint("Switch", "judgment"):
                Y = cfg.getint("judgment", "y")
            print(f"y是{Y}开始")
            for k in range(10):
                if k >= Y:
                    print(k)
                # 写入 序号
                Write(n, x, y)
                y += 1
            # 完成y值 = 0
            Write(n, x, 0)
            x += 1
        # 完成x值 = 0
        Write(n, 0, 0)
        n += 1
    完成n值 = 0
    Write(0, 0, 0)


if __name__ == '__main__':
    Start_up()

配置 py 文件

import os
from configparser import ConfigParser


# 写入文件函数
def write(path, data):
    with open(path, mode="w", encoding="utf-8") as f:
        f.write(data)


# 初始化 判断有没有 ini 配置文件 防止没有 配置文件 程序无法运行
def init():
    data = '''[judgment]
; 首次判断序号
n = 0
; 二次判断序号
x = 0
; 第三次判断序号
y = 0
'''
    if not os.path.exists("Settings.ini"):
        write("Settings.ini", data)
    data1 = '''[Switch]
; 注意 table [judgment] 区分大小写 table下面 不区分大写小 大写 读取后也是小写 需要注意 坑
; 是否 启动 断点续接 开关 利用Python 的特性 0代表False 除0以外代True 本次就用 1来代表True
judgment = 1
'''
    if not os.path.exists("Settings1.ini"):
        write("Settings1.ini", data1)


# 初始化 ini配置文件
init()

# 读取 Settings.ini 配置信息
cfg = ConfigParser()
cfg.read('Settings.ini', encoding="utf-8")
cfg.read('Settings1.ini', encoding="utf-8")


def Write(n, x, y):
    data = f'''[judgment]
; 首次判断序号
n = {n}
; 二次判断序号
x = {x}
; 第三次判断序号
y = {y}
    '''
    # 和上面N,X,Y 变量一起做适配
    if cfg.getint("Switch", "judgment"):
        write("Settings.ini", data)

ini 配置文件 动态

[judgment]
; 首次判断序号
n = 0
; 二次判断序号
x = 0
; 第三次判断序号
y = 0
    

ini 静态配置文件 断点续接 开关

[Switch]
; 注意 table [judgment] 区分大小写 table下面 不区分大写小 大写 读取后也是小写 需要注意 坑
; 是否 启动 断点续接 开关 利用Python 的特性 0代表False 除0以外代True 本次就用 1来代表True
judgment = 1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

〈Aduh〉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值