Уведомления

Группа в Telegram: @pythonsu

#1 Май 13, 2010 16:28:09

skorpik
От:
Зарегистрирован: 2010-03-31
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

как получить значения типа datatime?

подскажите как получить значения типа datatime!
у меня есть файл, из которого данные импортируются в базу данных ()
вот текстовый файл:

00:00:25   309.0     1.5
00:00:55 209.0 2.7
00:01:25 115.0 3.5
00:01:55 39.0 1.2
00:02:25 56.0 3.5
00:02:55 108.0 1.9
00:03:25 270.0 4.5
в первом столбце находится время измерения, а дата получается из пути к файлу из которого считываем данные
дату я получаю следующим образом:
year='2009'
month='01'
day='30'

name = 'C:/G%s/M%s/D%s/WIND1.dat'%(year, month, day)
fp = open (name)
fp.readline()
fname = str(fp)
print fname

t=fname.split('/')[1:-1]
#print t
tt=str(t)
g=tt[3:7]
m=tt[12:14]
d=tt[19:21]
day=g+'_'+m+'_'+d
print day
как мне из этого получить одно значение типа datatime?
пока у меня сделано так что значение с датой и временем текстового формата

вот полный скрипт:
# -*- coding: UTF-8 -*- numpy as np, sys
import MySQLdb
import numpy as np
from windrose import WindroseAxes
from matplotlib import pyplot as plt
import matplotlib.cm as cm
from numpy.random import random
from numpy import arange

c = MySQLdb.connect(host='localhost', user='root', passwd='12345', db='probnaya')
cu=c.cursor()
year='2009'
month='01'
day='30'

name = 'C:/G%s/M%s/D%s/WIND1.dat'%(year, month, day)
fp = open (name)
fp.readline()
fname = str(fp)
print fname

t=fname.split('/')[1:-1]
tt=str(t)
g=tt[3:7]
m=tt[12:14]
d=tt[19:21]
day=g+'_'+m+'_'+d
print day

def Create_table(cu):
try:
cu.execute("""
CREATE TABLE IF NOT EXISTS Wind(
date_time VARCHAR(25),
course DECIMAL(6,2),
speed DECIMAL(6,2),
max_speed DECIMAL(6,2)
);
""")
except :
print 'Error: '

def Insert_table(fp):
for stroka in fp:
try:
xx = stroka.split()
d_time=day + ' ' + xx[0]
course=float(xx[1])
speed=float(xx[2])
max_speed=float(xx[3])
sql = "INSERT INTO Wind (date_time, course, speed, max_speed) \
VALUES ('%s', '%s', '%s', '%s')"%(d_time, course, speed, max_speed)
# print sql
cu.execute(sql)
c.commit()
except:
print 'problem %s'%d_time
print sys.exc_info()
# else:
# print 'ok %s'%d_time

Create_table(cu)
Insert_table(fp)

cu.execute("""SELECT course, speed, max_speed FROM Wind;""")
data = cu.fetchall()
napr=np.array([float(napr_skor[0]) for napr_skor in data])
skor=np.array([float(napr_skor[1]) for napr_skor in data])
max_skor=np.array([float(napr_skor[2]) for napr_skor in data])
#print napr
#print skor

"роза ветров"
def new_axes():
fig = plt.figure(figsize=(6, 6), dpi=-55, facecolor='w', edgecolor='w')
rect = [0.35, 0.35, 0.6, 0.6]
ax = WindroseAxes(fig, rect, axisbg='w')
fig.add_axes(ax)
return ax

def set_legend(ax):
l = ax.legend(axespad=0.7)
plt.setp(l.get_texts(), fontsize=8)

ax = new_axes()
ax.contourf(napr, skor, bins=arange(0,8,1), normed=True)
set_legend(ax)
plt.savefig('nameBD.png', format='png')

fp.close()
c.close()



Офлайн

#2 Май 13, 2010 16:58:59

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

как получить значения типа datatime?

пробовали импортировать модули datetime или time и там посмотреть?
ну что-то типа
import datetime
f=datetime.datetime()#и передать то что вам нужно



Отредактировано (Май 13, 2010 17:02:11)

Офлайн

#3 Май 13, 2010 18:42:47

skorpik
От:
Зарегистрирован: 2010-03-31
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

как получить значения типа datatime?

нет, так не получается, хотя я может не так делаю

d_time=datetime.datetime(day, xx[0])



Офлайн

#4 Май 13, 2010 19:09:55

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

как получить значения типа datatime?

skorpik
нет, так не получается, хотя я может не так делаю
d_time=datetime.datetime(day, xx[0])
datetime можно передавать такие параметры:
datetime(year,month,day,hour,minute,second)
f=datetime.datetime(2010,10,1,12,23,34)
print(f)
то что получится:
2010-10-01 12:23:34

теперь думаю понятно!



Отредактировано (Май 13, 2010 19:27:37)

Офлайн

#5 Май 13, 2010 20:30:28

skorpik
От:
Зарегистрирован: 2010-03-31
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

как получить значения типа datatime?

попробовал сделать так, теперь получается нужный формат, но в конце появляется ошибка:
exceptions.UnicodeEncodeError: ‘ascii’ codec can't encode character u'\u0440' in position 11: ordinal not in range(128)
что она значит?



Офлайн

#6 Май 13, 2010 20:33:03

UsCr
От:
Зарегистрирован: 2009-11-04
Сообщения: 216
Репутация: +  0  -
Профиль   Отправить e-mail  

как получить значения типа datatime?

Она значит что “ ‘ascii’ codec can't encode character u'\u0440' in position 11: ordinal not in range(128)”.
Проблема с кодировкой.



Офлайн

#7 Май 15, 2010 01:56:48

vak
От:
Зарегистрирован: 2007-05-04
Сообщения: 262
Репутация: +  0  -
Профиль   Отправить e-mail  

как получить значения типа datatime?

Зачем тип datetime? Формируй строкой и отправляй в базу - будет работать 100%



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version