Циклический просмотр списка месяцев с годами, чтобы проверить, существует ли файл

Я пытаюсь просмотреть список месяцев с годами, начиная с 2012 года и ноября, вплоть до текущего года и месяца.

start_year = "2012"
start_month = "November"

month = start_month
year = start_year

# some sort of for loop or cycle here
    try:
        with open('{} {}.csv'.format(month, year)):
           CSVFile = True
        if CSVFile:
            print "do something cool here"
    except IOError:
        CSVFile = False
    print ""

Будем очень признательны за любые советы или конструктивные комментарии о том, как этого достичь, или советы. Спасибо SMNALLY


person SMNALLY    schedule 30.10.2013    source источник


Ответы (2)


Я бы, вероятно, сделал это следующим образом:

import datetime,  os

current_month = datetime.date.today().replace(day=1)
# this could be more concise if `start_month` were the month number rather than month name
possible_month = datetime.datetime.strptime('%s %s' % (start_month, start_year), '%B %Y').date()
while possible_month <= current_month:
    csv_filename = possible_month.strftime('%B %Y') + '.csv'
    if os.path.exists(csv_filename):
        CSVFile = True
        # do something cool here, and maybe break the loop if you like
    possible_month = (possible_month + datetime.timedelta(days=31)).replace(day=1)

Дайте мне знать, если вам нужно, чтобы я рассказал, как это работает.

person Peter DeGlopper    schedule 30.10.2013
comment
@ InspectorG4dget Мне понравилось читать ваше обращение, я смеялся :P - person Ryflex; 31.10.2013
comment
@Hyflex: из-за лишения сна я стал очень веселым гостем на вечеринке (подтолкнуть подтолкнуть подмигнуть подмигнуть) - person inspectorG4dget; 31.10.2013

person    schedule
comment
Аккуратное искупление, простое, эффективное и похожее на оперативный пост - person Ryflex; 31.10.2013
comment
Либо моя очередь что-то упустить, либо это никогда не увеличивает дату кандидата. - person Peter DeGlopper; 31.10.2013
comment
@PeterDeGlopper: Вы правы. Я только что исправил это. Я действительно должен прекратить программировать без сна и кофе - person inspectorG4dget; 31.10.2013
comment
я иду на твою вечеринку - person Ryflex; 31.10.2013
comment
@ spectorG4dget Иди спать, твой код приветствуется, но я вижу, что ты сегодня страдаешь от недосыпания. :) Спасибо за решения, ребята, попробую оба и приму тот, который мне кажется проще всего использовать. - person SMNALLY; 31.10.2013