python - 将 Python 程序设置为在一定天数后过期
问题描述
假设我想实施 30 天试用或运行 5 天 beta 测试。我将如何使用 Python 来解决这个问题?这个想法是程序停止工作并向用户打印一条消息,表明程序在所述时间后过期。我想过这样做。
import sys
import time
start = time.time
expire = start + 2592000
while True:
Run Program
if time.time > start + expire:
sys.exit("This program has now expired")
这样做的问题是程序必须在用户的机器上持续运行指定的时间。必须有一种更简单或更明智的方法来解决它,例如在启动时检查程序是否已达到一定天数。提前感谢您对此的意见。
更新
我只是想到了另一种方法。这行得通吗?
import datetime
import sys
start = datetime.datetime.now()
expire = start.month + 1
while True:
Run Program
if datetime.datetime.now().month == expire:
sys.exit("Your 1 month trial has expired.")
解决方案
如果您不关心安全性,请创建一个包含首次运行日期的文件,例如:
import datetime
import sys
import os
first_launch_date_filepath = ".first_launch_date"
def is_program_expired():
# Query date of first lauch in given file
if os.path.exists(first_launch_date_filepath):
with open(first_launch_date_filepath, 'r') as fileRead:
time_as_str = fileRead.read()
start_date = datetime.datetime.strptime(time_as_str, "%Y_%m_%d")
# Check if current time is greater than time limit
expire_date = start_date + datetime.timedelta(days=31)
if datetime.datetime.now() > expire_date:
sys.exit("Your 1 month trial has expired.")
# Supposedly first run
else:
start_date = datetime.datetime.now()
with open(first_launch_date_filepath, 'w') as fileWrite:
fileWrite.write(start_date.strftime("%Y_%m_%d"))
if __name__ == '__main__':
is_program_expired()
# YOUR PROGRAM
注意:这是非常不安全的,我建议你隐藏那个文件,但是任何人都可以打开这个 python 代码并通过编辑这个代码或包含开始时间的文件来弄清楚如何绕过这个安全性。
加密您的文件,隐藏它,更改它的名称。最好的方法是使用服务器来存储该日期,激活后,您会将日期发送到服务器。因为这是 python,所以任何用户都可以阅读、理解和修改这些代码行以自动绕过您的安全性。
推荐阅读
- php - WooCommerce:在挂钩函数中获取产品变体自定义字段值
- r - 在 R 中映射南极洲
- c - 为什么 Visual Studio Code 无法编译我的 C 代码?
- node.js - 我想返回帖子数组,但我得到了一个空数组
- javascript - JavaScript 代理:简单的日志函数,将字符串参数代理到 console.log()
- firebase - getter 'uid' 在颤振中被调用为 null
- python - Python 元音常量
- python-3.x - FileNotFoundError Traceback(最近一次调用最后一次)
- regex - 正则表达式匹配具有不同值的字符串
- html - div 中两个 hr 标签之间的表格。表格不会从 div 中获取所有属性