首页 > 解决方案 > 将 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.")

标签: python

解决方案


如果您不关心安全性,请创建一个包含首次运行日期的文件,例如:

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,所以任何用户都可以阅读、理解和修改这些代码行以自动绕过您的安全性。


推荐阅读