如果有条件(python),模块对象在睡眠中不可调用

Module object not callable in sleep if conditional ( python )

我在 python 脚本的顶部导入了以下模块:

import os
import sys
import time
import datetime
import random
import pprint
from random import randint
from time import sleep
from datetime import datetime, timedelta

但是,我的这部分代码仍然出现模块对象错误:

def check(low,high):
    with open('done.txt', 'r+') as done:
        ts = time.time()
        sttime = datetime.fromtimestamp(ts).strftime('%Y%m%d_%H:%M:%S - ')
        done_completed = open('done_completed.txt', "a")
        for line in done:
            now = datetime.now()
            now_time = now.time()
            if now_time >= time(23,30) and now_time <= time(06,30):
                print "sleeping"
                sleep(5000)
            else:
                done_id = line.strip()[20:]
                then = datetime.strptime(line.strip()[:17], '%Y%m%d_%H:%M:%S')

(下面还有另一个 if elif elif,但我认为它与错误无关)

(是的,我是 python 初学者)

错误是:

  File "/home/joe/Desktop/follomatic/follomatic.py", line 85, in check
if now_time >= time(23,30) and now_time <= time(06,30):
TypeError: 'module' object is not callable

有没有人看出哪里出了问题?我是不是没有指定正确调用模块?

谢谢:)

Python 的 datetime 模块有点像老鼠窝。 :) 如果您使用 from 导入,它会变得更加混乱。

这段代码应该能澄清一些事情。请注意,这不是做事的好方法。通常使用 datetime.datetime 对象比 datetime.time 对象更好,否则如果您需要处理包括午夜(或多天)的时间间隔,事情会变得混乱。但我写这段代码是为了与你问题中的代码大致对应,我想让它在一天中的任何时间都易于测试。

    #!/usr/bin/env python

    ''' datetime.time manipulation demo

        From 

        Written by PM 2Ring 2015.02.19
    '''

    from time import sleep
    import datetime

    now = datetime.datetime.now()
    now_time = now.time()

    #A datetime.time example
    t1 = datetime.time(5, 30)
    print 't1 is', t1

    now = datetime.datetime.now()
    now_time = now.time()
    print 'now is %s, now_time is %s' % (now, now_time)

    begin_datetime = now + datetime.timedelta(seconds=5)
    end_datetime = now + datetime.timedelta(seconds=10)

    begin_time = begin_datetime.time()
    end_time = end_datetime.time()

    print 'begin', begin_time
    print 'end', end_time

    for i in xrange(15):
        now_time = datetime.datetime.now().time()
        print now_time, begin_time <= now_time <= end_time
        sleep(1)

典型输出

t1 is 05:30:00
now is 2015-02-19 23:44:39.152786, now_time is 23:44:39.152786
begin 23:44:44.152786
end 23:44:49.152786
23:44:39.152905 False
23:44:40.153999 False
23:44:41.155191 False
23:44:42.156398 False
23:44:43.156614 False
23:44:44.157810 True
23:44:45.159028 True
23:44:46.160231 True
23:44:47.161444 True
23:44:48.162660 True
23:44:49.163869 False
23:44:50.165076 False
23:44:51.166650 False
23:44:52.167842 False
23:44:53.169053 False