2015-12-10 4 views
0

Я получаю эту ошибку при попытке использовать модуль DATETIMEвремя не соответствует формату «% а% B% d% H:

Кажется, что он не распознает формат времени

Формат времени, который используется в файле, как это:

Сб янв 17 21:20:41 +0000 2015

кто-нибудь знает, что вызывает эту проблему? Благодаря!

Traceback (most recent call last): 
 
    File "ttrends.py", line 46, in <module> 
 
    week = time_str_to_weekday(time_str, parse_time_format=parse_time_format) 
 
    File "ttrends.py", line 36, in time_str_to_weekday 
 
    dt = datetime.fromtimestamp(time.mktime(time.strptime(time_str, parse_time_format))) 
 
    File "c:\python34\lib\_strptime.py", line 494, in _strptime_time 
 
    tt = _strptime(data_string, format)[0] 
 
    File "c:\python34\lib\_strptime.py", line 337, in _strptime 
 
    (data_string, format)) 
 
ValueError: time data "<_io.TextIOWrapper name='time.txt' mode='r' encoding='utf8'>" does not match format '%a %b %d %H: 
 
%M:%S +0000 %Y'

parse_time_format = '%a %b %d %H:%M:%S +0000 %Y' 
 
day_output_date_format = '%Y%m%d_%a' 
 
month_output_date_format = '%Y%m' 
 
week_output_date_format = '%Y_%U' 
 

 
import time 
 
from datetime import datetime, timedelta 
 

 
with open("time.txt",'r',encoding='utf8') as f: 
 
    time_str = str(f) 
 

 
def time_str_to_day(time_str): 
 

 
    t = time.strptime(time_str, parse_time_format) 
 

 
    return time.strftime(day_output_date_format, t) 
 

 
def time_str_to_month(time_str): 
 

 
    t = time.strptime(time_str, parse_time_format) 
 

 
    return time.strftime(month_output_date_format, t) 
 

 
def time_str_to_week(time_str, parse_time_format=parse_time_format): 
 

 
    t = time.strptime(time_str, parse_time_format) 
 

 
    return time.strftime(week_output_date_format, t) 
 

 
#week starts on Monday 
 
def time_str_to_weekday(time_str, parse_time_format=parse_time_format): 
 
    dt = datetime.fromtimestamp(time.mktime(time.strptime(time_str, parse_time_format))) 
 

 
    week = [] 
 
    start = dt - timedelta(days = dt.weekday()) 
 

 
    for i in range(7): 
 
     current = start + timedelta(days = i) 
 
     week.append(current.strftime(day_output_date_format)) 
 
    #end = start + timedelta(days = 6) 
 
    return week 
 
week = time_str_to_weekday(time_str, parse_time_format=parse_time_format) 
 
print (week)

+0

См.: Как создать минимальный, полный и проверенный пример. http://stackoverflow.com/help/mcve – Tempux

ответ

0

инструкция time_str = str(f) преобразует объект F в ул. Так что в вашем случае значение time_str является < имени _io.TextIOWrapper = режим «time.txt» = «г» кодирующим = «utf8»>

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

time_str = f.readline() 
+0

Thanx @Dav Он определил этот вопрос, но теперь она дает эту ошибку 'Traceback (самый последний вызов последнего): Файл " ttrends.py", строка 46, в неделя = time_str_to_weekday (time_str, parse_time_format = parse_time_format) Файл "ttrends.py", строка 36, в time_str_to_weekday дт = datetime.fromtimestamp (time.mktime (time.strptime (time_str, parse_time_format))) Файл «C: \ python34 \ lib \ _strptime.py ", строка 494, в _strptime_time tt = _strptime (data_string, format) [0] Файл« c: \ python34 \ lib \ _strptime.py », строка 340, в _strptime data_string [найден .end():]) ValueError: unconv сохраненные данные остаются: ' – Robbert

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

  • Нет связанных вопросов^_^