Python 在 if 语句中不按 time.mktime 条件执行

标签 python if-statement time conditional-statements mktime

我有一个小脚本,用于在指定时间(“commandTime”)执行系统命令,然后在指定时间(“stopTime”)后退出。但是,当我运行脚本时,它通常不会执行“if”语句下的命令。 (它有时会执行,有时不会。)

假设我不是一个彻头彻尾的白痴(对此尚无定论...)并且正在合理地设置时间变量,脚本应该在 if 语句中执行 print 命令 when 'time.mktime(time.localtime ())' 等于或大于格式化的 'commandTime' 变量。


以下是相关代码的摘录:

import time

commandTime = time.strptime('2013-03-01 05:00:00', "%Y-%m-%d %H:%M:%S")
stopTime = time.strptime('2013-03-01 05:10:00', "%Y-%m-%d %H:%M:%S")


while (time.mktime(time.localtime()) <= time.mktime(stopTime)):
 if (time.mktime(time.localtime()) >= time.mktime(commandTime)):
  print "Green team go"
 time.sleep(100)

假设设置了 stopTime 和 commandTime 变量,以便在执行脚本时满足以下条件: time.localtime() < commandTime < stopTime

脚本应循环执行 while 语句,直到 time.localtime() 等于或大于 stopTime,并在每个循环中检查 if 条件。一旦 time.localtime() 大于或等于 commandTime,打印命令就应该执行。

我正在使用 time.mktime() 将 datetime 对象转换为 Unix 时间(我认为是一个 float ),以便在 while 循环和 if 语句中进行比较。

while 循环每次都可靠地工作,只是 if 语句在大多数情况下无法执行。

我在 Debian Squeeze 32 位上运行 python 2.7.3。

我的问题是:我在这个脚本中做错了什么导致 if 语句在满足条件时不执行?

谢谢!

最佳答案

您当前设置它的方式使以下内容成立: commandTime <= time.localtime() <= stopTime

如果您希望它按照您所说的方式进行(localtime < commandtime < stoptime),您将必须执行以下操作:

import time

commandTime = time.strptime('2013-03-05 21:40:00', "%Y-%m-%d %H:%M:%S")
stopTime = time.strptime('2013-03-05 21:50:00', "%Y-%m-%d %H:%M:%S")


while (time.mktime(time.localtime()) <= time.mktime(stopTime)):
  if (time.mktime(time.localtime()) <= time.mktime(commandTime)):
    print ("Green team go")
  time.sleep(100)

如果你只是错误地打印了你想要它执行的方式,而你实际上想要 commandTime <= time.localtime() <= stopTime,我在 Windows 上的 python 3.2 中尝试过这种方式(将 print 更改为函数,使用我的本地时间插入)并且它与正确设置的 commandTime 和 stopTime 变量一起工作,因此它一定与 Python 2.7 或 Debian Squeeze 有关。

import time

commandTime = time.strptime('2013-03-05 21:40:00', "%Y-%m-%d %H:%M:%S")
stopTime = time.strptime('2013-03-05 21:50:00', "%Y-%m-%d %H:%M:%S")


while (time.mktime(time.localtime()) <= time.mktime(stopTime)):
  if (time.mktime(time.localtime()) >= time.mktime(commandTime)):
    print ("Green team go")
  time.sleep(100)

关于Python 在 if 语句中不按 time.mktime 条件执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15237864/

相关文章:

python - 具有多个 tqdm 进度条的多处理

python - 用 python 绘制 3d 笛卡尔网格

powershell - 在 PowerShell 的 Active Directory 中测试计算机对象是否存在

arrays - swift 阵列。尝试根据当前时间查找数组中的下一个时间

sql - 添加和递增日期和时间 (Postgresql)

c++ - 如何查看应用程序的工作时间?

Python:获取 Windows 操作系统版本和体系结构

java - Java 中的 struct.unpack_from

java - 在 switch case 语句中使用方法

debugging - Fortran if 测试创建的段错误