Создайте отсортированный список дат дня рождения и добавьте каждую дату в новую строку в файле - PullRequest
0 голосов
/ 28 июня 2018

Итак, я пытался создать список слов с датами дня рождения. Я пытаюсь добавить каждое значение в новую строку в файле birdthday_wordlist.txt. Файл и формат должны быть такими:

01/01/1998
02/01/1998
03/01/1998
dd/mm/yyyy
12/12/2000

Я был способен генерировать только дд, мм или гггг, с такими скриптами:

with open('XXXXXX_wordlist.txt', 'w') as birdthday_wordlist:
for i in range(1980, 2000):
    birdthday_wordlist.write('{}\n'.format(i))

Я знаю, что есть способ, а пока я не могу его найти.

Ответы [ 3 ]

0 голосов
/ 28 июня 2018

Если я понимаю, что вы спрашиваете, это очень похоже на вопрос здесь

Я адаптировал ответ, чтобы записать даты в файл:

from datetime import timedelta, date

def daterange(start_date, end_date):
    for n in range(int ((end_date - start_date).days)):
        yield start_date + timedelta(n)

start_date = date(1980, 1, 1)
end_date = date(2000, 1, 1)
with open('XXXXXX_wordlist.txt', 'w+') as birdthday_wordlist:
    for single_date in daterange(start_date, end_date):
        birdthday_wordlist.write('%s\n' % single_date.strftime("%d/%m/%Y"))

Будет выводить:

01/01/1980
02/01/1980
03/01/1980
04/01/1980
05/01/1980
...
31/12/1999
0 голосов
/ 28 июня 2018

Если вам нужно решение, которое не использует импортированные пакеты, вы можете сделать следующее:

data = []
f_string = "%02d/%02d/%04d\n" # Will be presented as dd/mm/yyyy format

for year in range(1980, 2000):
    for month in range(1, 12):
        for day in range(1, 31):
            data.append(f_string % (day, month, year))

with open('XXXXXX_wordlist.txt', 'w') as birthday_wordlist:    
    for item in data:
        birthday_wordlist.write(item)
0 голосов
/ 28 июня 2018

Вы можете использовать функции time и datetime. Вы можете установить дату начала, как вам нужно, и дату окончания, которую вы хотите. Сумма составит 1 день за каждую итерацию

import datetime

ini=datetime.date(year=1980,month=1,day=1)
end=datetime.date(year=2000,month=1,day=1)
while ini<=end:
    birdthday_wordlist.write(ini.strftime('%d/%m/%Y')+'\n')
    ini=ini+datetime.timedelta(days=1)
...