我知道问这样的问题不好,但是我很诚实,这是我现在的问题。我不知道该做什么了,所以我不得不问这个问题(我也不知道我还能在哪里问这个问题)。我无法调试可以在日期更改时看到的代码,所以我不知道问题出在哪里。
我的代码正在拍照,并将照片在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)
答案 0 :(得分:1)
在循环的第一个周期之后,脚本激活时newDate和oldDate都等于datetime.datetime.now()。
您对datetimeNow值的推理有点偏离;它设置为激活状态,您永远不会更新它。考虑将datetimeNow(静态值)替换为datetime.datetime.now()(提供当前日期时间的函数调用);或至少在循环内的某处更新datetimeNow。
祝你好运!