我遇到功能问题,但看不到哪里

时间:2019-03-06 08:42:43

标签: python

我知道问这样的问题不好,但是我很诚实,这是我现在的问题。我不知道该做什么了,所以我不得不问这个问题(我也不知道我还能在哪里问这个问题)。我无法调试可以在日期更改时看到的代码,所以我不知道问题出在哪里。

我的代码正在拍照,并将照片在24小时内发送到Twitter。 代码在第一天工作正常,但之后不再发送照片。而且,我在代码中看不到任何问题。请看看并说出是否有问题。

from twython import Twython
from picamera import PiCamera
from time import sleep
import datetime
import os
sleep(500)

camera = PiCamera()
camera.rotation = 180
datetimeNow = datetime.datetime.now()
oldDate = 0
newDate = 0
photoAlreadyTaken = 0

CONSUMER_KEY = 'sad...'
CONSUMER_SECRET = 'asd...'
ACCESS_TOKEN_KEY = 'fdsf...'
ACCESS_TOKEN_SECRET = 'asd..'

twitter = Twython(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN_KEY, 
ACCESS_TOKEN_SECRET)

while True:
    try:
        newDate = datetimeNow.day
    except:
        print("error")  
    if newDate != oldDate:
        if datetimeNow.hour == 14 and photoAlreadyTaken != 1:   
            photoAlreadyTaken = 1
            try:
                camera.start_preview()
                sleep(5)
                camera.capture('/home/pi/strawberry.jpg')
                camera.stop_preview()
            except:
                photoAlreadyTaken = 0

            sleep(5)

            try:
                with open('/home/pi/strawberry.jpg', 'rb') as photo:
                twitter.update_status_with_media(status=str(datetimeNow.day) + "-" + str(datetimeNow.month) + "-" + str(datetimeNow.year), media=photo)
            except:
                photoAlreadyTaken = 0

            oldDate = datetimeNow.day

    else:    #When the first photo is sent this is executed, but I cannot debug how long
        photoAlreadyTaken = 0
    sleep(500)

1 个答案:

答案 0 :(得分:1)

在循环的第一个周期之后,脚本激活时newDate和oldDate都等于datetime.datetime.now()。

您对datetimeNow值的推理有点偏离;它设置为激活状态,您永远不会更新它。考虑将datetimeNow(静态值)替换为datetime.datetime.now()(提供当前日期时间的函数调用);或至少在循环内的某处更新datetimeNow。

祝你好运!