Найти - Пользователи
Полная версия: как получить значения типа datatime?
Начало » Python для новичков » как получить значения типа datatime?
1
skorpik
подскажите как получить значения типа 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()
apologize828
пробовали импортировать модули datetime или time и там посмотреть?
ну что-то типа
import datetime
f=datetime.datetime()#и передать то что вам нужно
skorpik
нет, так не получается, хотя я может не так делаю
d_time=datetime.datetime(day, xx[0])
apologize828
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

теперь думаю понятно!
skorpik
попробовал сделать так, теперь получается нужный формат, но в конце появляется ошибка:
exceptions.UnicodeEncodeError: ‘ascii’ codec can't encode character u'\u0440' in position 11: ordinal not in range(128)
что она значит?
UsCr
Она значит что “ ‘ascii’ codec can't encode character u'\u0440' in position 11: ordinal not in range(128)”.
Проблема с кодировкой.
vak
Зачем тип datetime? Формируй строкой и отправляй в базу - будет работать 100%
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB