【问题标题】:Is it possible to keep track of how many times a Python Script has been ran without writing to a file?是否可以在不写入文件的情况下跟踪 Python 脚本运行了多少次?
【发布时间】:2019-01-04 23:02:30
【问题描述】:

我很好奇是否可以跟踪特定 .py 文件的运行次数,而无需从文件读取和写入。

本帖:how can i count how many time program has been executed in python

使用 atexit 模块更新 json 文件并记录脚本在其生命周期中运行的次数。我猜这种类型的数据必须记录在一个文件中?

【问题讨论】:

  • 据我所知,如果没有某种记录/写入文件,就无法实现这一点。我只是好奇你为什么想要这个有这样的限制?
  • 你可以让它与其他进程通信,比如服务器,并让它保持跟踪。但是,如果服务器出现故障,您将丢失您的信息。使用文件会容易得多。
  • 它不必专门写入文件,但信息必须存储在某处。可以是内存、文件、数据库等
  • @n1c9 我正在编写一些 Selenium 脚本。我只是想看看是否可以存在一个简短而甜蜜的脚本来跟踪这一点。我猜数据必须存储在某个地方。我猜还不如写一个文件。

标签: python operating-system execution counting atexit


【解决方案1】:

举一个例子如何从Why can't environmental variables set in python persist?设置环境变量:

你可以有脚本,在父shell中设置环境变量:

import pipes
import os
value = int(os.environ['MY_COUNTER']) + 1 if 'MY_COUNTER' in os.environ else 1
print("export MY_COUNTER=%s" % (pipes.quote(str(value))))

并使用命令运行此脚本:

eval $(python example.py)

然后每次运行都会将MY_COUNTER 增加 1。

当然,这个环境变量不会持久化,它只是在内存中。

【讨论】:

  • 这只有在脚本没有产生任何其他输出时才有效。它还假定脚本将始终从符合 POSIX 的 shell 运行。
  • @chepner 这只是一个例子,总是可以重定向输出eval $(python example.py 2>&1 >/dev/null) 并将MY_COUNTER 打印到stderr(或其他文件描述符)
  • @AndrejKesely 很酷的回答,谢谢!我认为出于我的 Selenium 脚本编写目的,这将是可行的。我只想运行一个脚本,20分钟后回来看看它运行了多少次。我不需要保存它。
  • 为此使用环境变量非常聪明!
猜你喜欢
  • 1970-01-01
  • 2011-06-15
  • 2012-06-24
  • 1970-01-01
  • 2014-02-28
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多