2013-08-10 3 views
0

я хотел бы подать свой файл с датами, и у меня есть 02 проблем:начинки с датами

from datetime import date, datetime, timedelta 

def perdelta(start, end, delta): 
    curr = start 
    while curr < end: 
     yield curr 
     curr += delta 


fo = open("dattes.txt","wb") 
for result in perdelta(date(2011, 10, 10), date(2011, 12, 12), timedelta(days=4)): 
    fo.write(result) 


fo.close() 

1- я получаю эту ошибку:

Traceback (most recent call last): File "C:\test\date.txt", line 12, in fo.write(result) TypeError: must be string or buffer, not datetime.date

2-я хотел бы, что дата вывода будет непрерывным (без «-» между днем, месяц и год)

ответ

2

Одно изменение будет решить обе проблемы:

fo.write(result.strftime('%Y%m%d\n')) 
+0

спасибо, это работает хорошо – yok

+0

Если ответ работает для вас, пожалуйста, отметьте его как Принимается, нажав на галочку слева от ответа. Добро пожаловать в StackOverflow. –

2

Использовать datetime.date.strftime для форматирования даты.

Возможно, вы хотите написать новую строку ('\n') между ними, если вы не хотите 201110102011101420111018.....

Так,

... 
for result in perdelta(date(2011, 10, 10), date(2011, 12, 12), timedelta(days=4)): 
    fo.write(result.strftime('%Y%m%d\n')) 
.... 

альтернатива

... 
for result in perdelta(date(2011, 10, 10), date(2011, 12, 12), timedelta(days=4)): 
    fo.write('{0:%Y%m%d}\n', result) 
... 
+0

Конечно, если вы хотите новую строку, просто добавьте ее в строку формата strftime, вместо того, чтобы называть второй раз только для новой строки. –

+0

@JohnZwinck, я исправил это. Спасибо за комментарий. – falsetru

+0

Я использую (\ n), но все же получил его в одной строке ????? – yok

Смежные вопросы