python,利用可变对象实现设置参数的自动回存

需求:json格式的设置文件,当设置文件的某一个设置值在使用中被改变,自动回存json文件。

demo.json的内容:

{
    "a": {
        "b": {
            "c": {
                "d": {
                    "e": [
                        "first"
                    ]
                }
            }
        }
    }
}
将['a']['b']['c']['d']['e'],这个多层的内容值设置为一个变量,当变量在使用中被改变之后,要求将自动其回存至json文件,而不用手动地再次输入['a']['b']['c']['d']['e']这样复杂的结构。

实现的脚本:

import json


# 读取JSON文件并分配参数
def read_json():
    global json_data, var
    with open('..\JSON\demo.json', 'r', encoding='utf-8') as file_json:
        json_data = json.load(file_json)
        var = json_data['a']['b']['c']['d']['e']  # 变量的定义。变量指向了一个列表
        print(f'初始变量的内容为{var}')


read_json()


# 退出前
def before_quit():
    global json_data
    # 回存json文件
    with open('..\JSON\demo.json', 'w') as file:
        json.dump(json_data, file, indent=4)


while True:
    user_input = input("请输入内容 (输入 'xxx' 退出): ")
    if user_input.lower() == 'xxx':
        before_quit()
        print("程序结束。")
        break
    var[0] = user_input  # 修改变量所指向的列表的元素的值
    print(f"最后一次的输入: {user_input}")

代码解释和运行结果:

1、

# 读取JSON文件并分配参数
def read_json():
    global json_data, var
    with open('..\JSON\demo.json', 'r', encoding='utf-8') as file_json:
        json_data = json.load(file_json)
        var = json_data['a']['b']['c']['d']['e']  # 变量的定义。变量指向了一个列表
        print(f'初始变量的内容为{var}')

这里,定义了两个变量json_data和var,这两个变量都指向和包含指向了同一个列表,其初始内容为[ "first" ]。我们知道,一个列表,它的内存地址是固定的,但它的元素内容是可变的,利用这个特性就可以实现变量的传递。

2、

while True:
    user_input = input("请输入内容 (输入 'xxx' 退出): ")
    if user_input.lower() == 'xxx':
        before_quit()
        print("程序结束。")
        break
    var[0] = user_input  # 修改变量所指向的列表的元素的值
    print(f"最后一次的输入: {user_input}")

var[0] = user_input:当用户输入内容后,var这个变量指向的列表的[0]这个元素被修改为输入的内容。我们知道,json_data也包含指向了这个列表,因此当var[0] 变量发生改变时,json_data的内容实际上也就随之改变了。

3、

def before_quit():
    global json_data
    # 回存json文件
    with open('..\JSON\demo.json', 'w') as file:
        json.dump(json_data, file, indent=4)

将改变后的json_data的内容写回json文件。

4、运行的结果记录:

第一次运行:

记住,第一次运行,最后一次输入的内容是”3“ 。

第二次运行:

 可以看到,第二次运行的时候,第一次运行的最后一次输入的内容”3“被正确记录和读取了。

相关推荐

  1. Python可变参数

    2024-07-11 06:40:01       24 阅读
  2. 利用python 实现微信自动回复

    2024-07-11 06:40:01       30 阅读
  3. 如何利用python实现自己modbus-tcp库

    2024-07-11 06:40:01       43 阅读
  4. Python爬虫实战014:利用requests库实现自动评论

    2024-07-11 06:40:01       57 阅读
  5. Python 算法交易实验68 对象重构

    2024-07-11 06:40:01       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 06:40:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 06:40:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 06:40:01       58 阅读
  4. Python语言-面向对象

    2024-07-11 06:40:01       69 阅读

热门阅读

  1. 给事务如何加行锁,表锁

    2024-07-11 06:40:01       20 阅读
  2. WEB&HTTP

    2024-07-11 06:40:01       18 阅读
  3. 谱范数、Lipschitz 正则化

    2024-07-11 06:40:01       24 阅读
  4. 网络安全威胁情报到底是什么

    2024-07-11 06:40:01       22 阅读
  5. 东莞酷得 PMS134应广8位OTP单片机

    2024-07-11 06:40:01       22 阅读
  6. 大数据面试题之ElasticSearch(2)

    2024-07-11 06:40:01       20 阅读
  7. 单片机GPIO的八种工作模式

    2024-07-11 06:40:01       24 阅读
  8. 《火纹:风花雪月》种植最优化问题

    2024-07-11 06:40:01       23 阅读