Das Abholzen einer Liste basierend auf Ereignissen in zwischen zwei Datetimes zu sein
-
28-09-2019 - |
Frage
Ich habe eine Liste von Objekten, die unter anderen Daten-Bits, ein Datum enthalten, und ich brauche eine Liste aller Objekte zu schaffen, in dem das Datum zu jeder Zeit im letzten Monat fällt, also Mitternacht am 1. im letzten Monat Ich muss auch die Gesamtzahl der Objekte, die diese Kriterien erfüllen. Im Moment werde ich über sie in einer Reihe von While-Schleifen, aber ich fühle mich wie es muss ein besserer Weg, zumal mein Skript hängt sein: post = 0 #the current post we're analyzing
posts = 0 #the total number of posts in the month we actually care about
lastmonthposts = [] #I think i can just get rid of this
blog = pyblog.WordPress()
date = blog.get_recent_posts(1 + posts)[0]['dateCreated']
while (date > startthismonth):
print "So far, there have been " + str(posts) + " posts this month we've counted."
post = post + 1
date = blog.get_recent_posts(1 + post)[0]['dateCreated']
while (date > startlastmonth):
print "So far, there have been " + str(posts) + " posts last month we've counted, which is " + str(date.timetuple().tm_mon) + "."
posts = posts + 1
post = post + 1
date = blog.get_recent_posts(1 + post)[0]['dateCreated']
lastmonthposts.append('blog')
for blogpost in lastmonthposts:
postnumber = blogpost['postid']
comments = comments + int(blog.get_comment_count(postnumber)['approved'])
Lösung
Statt get_recent_posts()
würde ich get_page_list()
verwenden:
from datetime import datetime, timedelta
this_month_start = datetime.now().date().replace(day=1)
prev_month_start = (this_month_start - timedelta(days=1)).replace(day=1)
pages = blog.get_page_list()
last_month_pages = [
p for p in pages
if prev_month_start <= p['dateCreated'] < this_month_start]
last_month_approved_comment_count = sum(
blog.get_comment_count(page['page_id'])['approved']
for page in last_month_pages)
print "number of last month's pages:", len(last_month_pages)
print "number of approved comments for last month's pages:",
print last_month_approved_comment_count