运行代码之间的Python计数器

运行代码之间的Python计数器,python,text,counter,Python,Text,Counter,我想通过使用此代码限制打印到文本文件的次数,每次我运行下面的代码时,a被定义为零,我如何能够通过在代码末尾保存其值来创建计数器,然后在下次运行代码时恢复其值 a = 0 if a < 3: score = 5 with open('tom.txt','a') as fo: fo.write('Tom: ') fo.write(str(score)) fo.write("\n") a = a + 1 a=0 如

我想通过使用此代码限制打印到文本文件的次数,每次我运行下面的代码时,a被定义为零,我如何能够通过在代码末尾保存其值来创建计数器,然后在下次运行代码时恢复其值

a = 0
if a < 3:
    score = 5
    with open('tom.txt','a') as fo:
        fo.write('Tom: ')
        fo.write(str(score))
        fo.write("\n")
        a = a + 1
a=0
如果a<3:
分数=5
以open('tom.txt','a')作为fo:
fo.write('Tom:')
fo.write(str(score))
fo.写入(“\n”)
a=a+1
如果您有任何要求,我们将不胜感激。谢谢您……怎么样

a = restore_state()
if a < 3:
    score = 5
    with open('tom.txt','a') as fo:
        fo.write('Tom: ')
        fo.write(str(score))
        fo.write("\n")
        a = a + 1
        save_state(a)


对于单个整数,它很难比纯文本文件更简单。如果您想更多地参与进来—更多的设置,不同的数据类型—您可以使用JSON(
导入JSON
)或YAML(
导入YAML
)或配置文件(
导入configparser

您需要定义默认设置(如果设置文件不存在,请使用默认设置)、从文件加载设置的函数以及将设置保存到文件的函数

import json

class Settings:
    def __init__(self, settings_file, default_values):
        self.settings_file  = settings_file
        self.default_values = default_values
        self.load()

    def load(self, load_file=None):
        if load_file is None:
            load_file = self.settings_file

        try:
            with open(load_file) as inf:
                self.values = json.load(inf)
        except FileNotFoundError:
            self.values = self.default_values

    def save(self, save_file=None):
        if save_file is None:
            save_file = self.settings_file

        with open(save_file, "w") as outf:
            json.dump(self.values, outf)

    def __getattr__(self, key):
        return self.values[str(key)]

    def __setattr__(self, key, value):
        if key in {"settings_file", "default_values", "values"}:
            return super(Settings, self).__setattr__(key, value)
        else:
            self.values[str(key)] = value
            return value
你喜欢用什么

state = Settings("my_settings.json", {"a": 0})

if state.a < 3:
    score = 5
    with open('tom.txt','a') as fo:
        fo.write('Tom: ')
        fo.write(str(score))
        fo.write("\n")
        state.a += 1

state.save()
state=Settings(“my_Settings.json”,{“a”:0})
如果状态a<3:
分数=5
以open('tom.txt','a')作为fo:
fo.write('Tom:')
fo.write(str(score))
fo.写入(“\n”)
状态a+=1
state.save()

这个问题适用于哪个上下文?您可以定义一个函数,比如writeToFile和一个变量writeToFile.count,并在每次调用该函数时更新它
import json

class Settings:
    def __init__(self, settings_file, default_values):
        self.settings_file  = settings_file
        self.default_values = default_values
        self.load()

    def load(self, load_file=None):
        if load_file is None:
            load_file = self.settings_file

        try:
            with open(load_file) as inf:
                self.values = json.load(inf)
        except FileNotFoundError:
            self.values = self.default_values

    def save(self, save_file=None):
        if save_file is None:
            save_file = self.settings_file

        with open(save_file, "w") as outf:
            json.dump(self.values, outf)

    def __getattr__(self, key):
        return self.values[str(key)]

    def __setattr__(self, key, value):
        if key in {"settings_file", "default_values", "values"}:
            return super(Settings, self).__setattr__(key, value)
        else:
            self.values[str(key)] = value
            return value
state = Settings("my_settings.json", {"a": 0})

if state.a < 3:
    score = 5
    with open('tom.txt','a') as fo:
        fo.write('Tom: ')
        fo.write(str(score))
        fo.write("\n")
        state.a += 1

state.save()