我正在尝试编写一个脚本,该脚本将具有一个启动001的计数,并且每次运行该脚本时都会增加一个。
我只是帮助一些帮助开始这个,我该怎么做才能让它知道每次从哪里开始?有没有办法可以将它构建到脚本中来执行此操作?
到目前为止,关于如何做到这一点的坏主意: - 将数字(001)导出到文本文件,并让脚本在每个脚本(001 +1)的末尾更改该编号。
我觉得必须有一种更简单的方法,我更喜欢在脚本中自包含的方式。有人可以帮助我指出正确的方向吗?
感谢您的投入。
答案 0 :(得分:3)
如果你想要某种状态持久性,那么你的选择是有限的:
答案 1 :(得分:2)
以下是使用INI文件和JSON文件保存状态的快速示例。两者都试图读取配置文件,更新或初始化计数器,将新计数器保存回配置,然后返回计数器。
#!/usr/bin/env python3
import configparser
import json
from contextlib import suppress
def get_updated_ini_counter():
filename = 'config.ini'
section = 'general'
option = 'counter'
starting_count = 100
config = configparser.ConfigParser()
config.read(filename)
counter = 1 + int(config.get(section, option, fallback=starting_count - 1))
if section not in config:
config.add_section(section)
config.set(section, option, str(counter))
with open('config.ini', 'w') as f:
config.write(f)
return counter
def get_updated_json_counter():
filename = 'config.json'
option = 'counter'
starting_count = 100
config = {}
with suppress(FileNotFoundError):
with open(filename) as f:
config = json.load(f)
config[option] = 1 + config.get(option, starting_count - 1)
with open(filename, 'w') as f:
json.dump(config, f, indent=4)
return config[option]
if __name__ == '__main__':
print('ini counter = {}'.format(get_updated_ini_counter()))
print('json counter = {}'.format(get_updated_json_counter()))
答案 2 :(得分:1)
这似乎是一个广泛的问题。但是说你的脚本是water.H2O.waitForCloudSize(3, 50 * 1000/*ms*/);
并且它只是打印hello.py
,那么对于一个简单的情况,你在自己的台式机/笔记本电脑上运行这个脚本只需要包含几行来跟踪你的持续时间跑了剧本。
"hello world"
输出:
import datetime
def hello():
print "hello, world"
if __name__ == "__main__":
now = datetime.datetime.now()
## create log
with open("logs.txt", "a") as log:
log.write(str(now) + "\n") ## write out to log
## run hello
hello()
如果您需要知道某天/小时运行脚本的次数,您可以将其导出到Excel或其他内容,以显示一段时间内的使用情况。
以上是使用atexit
的上述示例atexit模块定义了一个用于注册清理功能的函数。这样注册的函数在正常的解释器终止时自动执行。
>python hello.py
hello, world
>python hello.py
hello, world
>python hello.py
hello, world
>python hello.py
hello, world
>python hello.py
hello, world
>cat logs.txt
2017-04-21 10:38:46.629779
2017-04-21 10:38:47.229658
2017-04-21 10:38:47.664318
2017-04-21 10:38:47.957451
2017-04-21 10:38:48.279116