Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 29, 2014 15:38:37

Roman_st
Зарегистрирован: 2014-10-29
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помощи. Сохраниение в файл изменяющейся переменной.

Привет, уважаемые фуромчане. Прошу Вашей помощи в решении одной задачи.
Задача: Существует некоторая, изменяющаяся втечении времени, переменная “a”. Нужна программа которая будет записывать значения данной переменной в файл( в файл с именем даты дня например : 27.08.14.txt , т.е того дня когда ведется запись) в столбик с интервалом 0,1 секунды и запись должна длиться в течении суток. Затем при наступлении 00:00 часов, программа создает новый файл с именем “Дата дня” в который будет продолжена запись данной переменной. если возможно еще рядом со значением переменной в файл записать актуальное время когда была сделана запись.Например :
13:01:100 “значение переменной а”
13:01:200 “Значение переменной a” и т.д

Я не программист, и с языками программирования никогда раньше не имел дело. Прошу очень Вашей помощи. Попробовал написать но не функционирует что то скрипт:

import time
ts = time.time()
import datetime
st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d')

#открыть файл
s= open(“D:\Kanal1” + str(st)+ “.txt”, “w”)
a=d.getAIN(0)# аналоговый сигнал прибора Labljack. Для тестироания в Python можно заменить.
i=1
#цикл
for i in range (2):

v=input (“a” )
b=str(v) #
print b #
#сохраниение в файл
s.write(str (i) + ‘: ’ + b + ‘\n’)
i=i+1
time.sleep(0.1) #0,1 сек пауза


s.close()

Отредактировано Roman_st (Окт. 29, 2014 15:57:04)

Офлайн

#2 Окт. 29, 2014 16:20:44

infoing
От:
Зарегистрирован: 2010-09-06
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помощи. Сохраниение в файл изменяющейся переменной.

Может так?
s = open(“D:\Kanal1\” + str(st)+ “.txt”, “w”)



Офлайн

#3 Окт. 29, 2014 16:25:43

Roman_st
Зарегистрирован: 2014-10-29
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помощи. Сохраниение в файл изменяющейся переменной.

infoing
Может так?s = open(“D:\Kanal1\” + str(st)+ “.txt”, “w”)

думаю что там все в порядке. скрипт еще не дописан до конца. много чего не хватает

Отредактировано Roman_st (Окт. 29, 2014 16:26:06)

Офлайн

#4 Окт. 29, 2014 23:26:07

Art-master
От: Россия, Ростов-на-Дону
Зарегистрирован: 2013-06-08
Сообщения: 78
Репутация: +  1  -
Профиль   Отправить e-mail  

Прошу помощи. Сохраниение в файл изменяющейся переменной.

Первый момент который я замечу. Зачем вы используете запись в файл если есть гораздо более приятная вещь как БД. В python есть в строенная, не надо забывать про это, SQLite. Не проще ли Вам будет переписать скрипт через работу с БД и есть ли такая возможность? (Может у вас там другой скрипт умеет читать только файлы текстовые и с БД он не умеет работать.)

Если есть возможность работы с БД, наверное, стоит попробовать что-то следующее.

# coding: utf-8
import sqlite3, datetime
import time as tm
conn = sqlite3.connect("D:\\Kanal1\\database_of_dates.db")
c = conn.cursor()
try: c.execute("CREATE TABLE times (date VARCHAR, time VARCHAR, a_value VARCHAR);")
except: pass
while True: # чтобы закончить данный цикл записи данных нажмите Ctrl-C
	# инициализация вашей переменной
	a = d.getAIN(0) # ваша функция (или метод объекта)
	# опрделение времени
	d = datetime.datetime.today()
	date = d.strftime("%d-%m-%y")
	time = d.strftime("%H:%M:%S")
	# запись данных
	c.execute("INSERT INTO times VALUES('%s', '%s', '%s')" % (date, time, a))
	# сохранение изменений
	conn.commit()
	tm.sleep(0.1)
conn.close()

Теперь тот скрипт нужный для просмотра данных
import sqlite3
conn = sqlite3.connect("D:\\Kanal1\\database_of_dates.db")
c = conn.cursor()
c.execute("SELECT date FROM times")
tmp = set()
for i in c.fetchall():
	tmp.add(i[0])
for i in tmp:
	c.execute("SELECT time FROM times WHERE date='%s'" % (i,))
	print i
	for j in c.fetchall():
		print "\t" + j[0]
raw_input()
conn.close()

Отредактировано Art-master (Окт. 29, 2014 23:50:46)

Офлайн

#5 Окт. 29, 2014 23:49:37

Art-master
От: Россия, Ростов-на-Дону
Зарегистрирован: 2013-06-08
Сообщения: 78
Репутация: +  1  -
Профиль   Отправить e-mail  

Прошу помощи. Сохраниение в файл изменяющейся переменной.

Но если Вы так придирчивы и Вам необходимо записывать все в наглядный текстовый файл, то давайте так, потому что Ваш пример кода “немного некорректный”:

import os, datetime
import time as tm
while True: # чтобы закончить запись - Ctrl-C
	a = d.getAIN(0) # ваша функция (или метод объекта) 
	d = datetime.datetime.today()
	# определение времени
	date = d.strftime("%d-%m-%y")
	time = d.strftime("%H-%M-%S")
	# запись
	if date in os.listdir("D:\\Kanal1\\"):
		f = open("D:\\Kanal1\\" + date + ".txt", "a")
		f.write(time + ":" + a + "\n")
	else:
		f = open("D:\\Kanal1\\" + date + ".txt", "w")
		f.write(time + ":" + a + "\n")
	f.close()
	tm.sleep(0.1)

P.S. Если есть какие-то вопросы - пишите.

Отредактировано Art-master (Окт. 29, 2014 23:58:58)

Офлайн

#6 Окт. 30, 2014 09:45:51

Roman_st
Зарегистрирован: 2014-10-29
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помощи. Сохраниение в файл изменяющейся переменной.

Art-master
Но если Вы так придирчивы и Вам необходимо записывать все в наглядный текстовый файл, то давайте так, потому что Ваш пример кода “немного некорректный”:
Спасибо огромнейшее и человеческое))

только при выполнение программы сохранения в файл выдает :
Traceback (most recent call last):
File “CUsers/Admin/Desktop/gfd”, line 10, in <module>
if date in os.listdir(“D:\\Kanal1\\”):
WindowsError: ??????? ?? ??????? ????? ????????? ????: ‘D:\\Kanal1\\*.*’

Отредактировано Roman_st (Окт. 30, 2014 09:46:34)

Офлайн

#7 Окт. 30, 2014 15:23:40

Art-master
От: Россия, Ростов-на-Дону
Зарегистрирован: 2013-06-08
Сообщения: 78
Репутация: +  1  -
Профиль   Отправить e-mail  

Прошу помощи. Сохраниение в файл изменяющейся переменной.

Проверьте, точно ли у вас такая папка есть на диске. Просто на данной строке (которая указана в traceback) находится код, который проверяет файл с датой в если он есть, то он запишет уже в существующий файл, если нет, то откроет новый. Так вот он проверяет наличие этого файла именно в папке D:\Kanal1. Если ее нет, то точно вылетит ошибка.

И еще: мне просто интересно, что это за скрипт и зачем он, если не секрет?

Офлайн

#8 Окт. 30, 2014 15:28:57

Roman_st
Зарегистрирован: 2014-10-29
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помощи. Сохраниение в файл изменяющейся переменной.

Art-master
Проверьте, точно ли у вас такая папка есть на диске. Просто на данной строке (которая указана в traceback) находится код, который проверяет файл с датой в если он есть, то он запишет уже в существующий файл, если нет, то откроет новый. Так вот он проверяет наличие этого файла именно в папке D:\Kanal1. Если ее нет, то точно вылетит ошибка.И еще: мне просто интересно, что это за скрипт и зачем он, если не секрет?
Не секрет. есть такой прибор Labjack U6. Данный прибор считывает аналоговый сигнал например с термопары , или термометра. Вот нужно сохранить эти значание в файл.


Traceback (most recent call last):
File “C:\Users\Admin\Desktop\gfd”, line 15, in <module>
f.write(time + “:” + a + “\n”)
TypeError: cannot concatenate ‘str’ and ‘int’ objects

Новая ошибка…

Отредактировано Roman_st (Окт. 30, 2014 15:43:21)

Офлайн

#9 Окт. 30, 2014 15:52:27

Art-master
От: Россия, Ростов-на-Дону
Зарегистрирован: 2013-06-08
Сообщения: 78
Репутация: +  1  -
Профиль   Отправить e-mail  

Прошу помощи. Сохраниение в файл изменяющейся переменной.

А, у вас там число… Я просто не знал, что это показания температуры. Вот.

import os, datetime
import time as tm
while True: # чтобы закончить запись - Ctrl-C
	a = str(d.getAIN(0)) # ваша функция (или метод объекта) 
	d = datetime.datetime.today()
	# определение времени
	date = d.strftime("%d-%m-%y")
	time = d.strftime("%H-%M-%S")
	# запись
	if date in os.listdir("D:\\Kanal1\\"):
		f = open("D:\\Kanal1\\" + date + ".txt", "a")
		f.write(time + ":" + a + "\n")
	else:
		f = open("D:\\Kanal1\\" + date + ".txt", "w")
		f.write(time + ":" + a + "\n")
	f.close()
	tm.sleep(0.1)

Офлайн

#10 Окт. 31, 2014 17:15:05

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Прошу помощи. Сохраниение в файл изменяющейся переменной.

import logging
import time
import logging.handlers
ch = logging.handlers.TimedRotatingFileHandler(filename='example.log',when='S',interval=3)
fmt = logging.Formatter('%(asctime)s %(message)s')
ch.setFormatter(fmt)
lg=logging.getLogger()
lg.addHandler(ch)
lg.setLevel(logging.DEBUG)
for i in range(10000):
    logging.info('data')
    time.sleep(0.1)
см например http://john16blog.blogspot.ru/2011/07/python-logging.html



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version