Форум сайта python.su
Привет, уважаемые фуромчане. Прошу Вашей помощи в решении одной задачи.
Задача: Существует некоторая, изменяющаяся втечении времени, переменная “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)
Офлайн
Может так?
s = open(“D:\Kanal1\” + str(st)+ “.txt”, “w”)
Офлайн
infoing
Может так?s = open(“D:\Kanal1\” + str(st)+ “.txt”, “w”)
Отредактировано Roman_st (Окт. 29, 2014 16:26:06)
Офлайн
Первый момент который я замечу. Зачем вы используете запись в файл если есть гораздо более приятная вещь как БД. В 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)
Офлайн
Но если Вы так придирчивы и Вам необходимо записывать все в наглядный текстовый файл, то давайте так, потому что Ваш пример кода “немного некорректный”:
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)
Отредактировано Art-master (Окт. 29, 2014 23:58:58)
Офлайн
Art-masterСпасибо огромнейшее и человеческое))
Но если Вы так придирчивы и Вам необходимо записывать все в наглядный текстовый файл, то давайте так, потому что Ваш пример кода “немного некорректный”:
Отредактировано Roman_st (Окт. 30, 2014 09:46:34)
Офлайн
Проверьте, точно ли у вас такая папка есть на диске. Просто на данной строке (которая указана в traceback) находится код, который проверяет файл с датой в если он есть, то он запишет уже в существующий файл, если нет, то откроет новый. Так вот он проверяет наличие этого файла именно в папке D:\Kanal1. Если ее нет, то точно вылетит ошибка.
И еще: мне просто интересно, что это за скрипт и зачем он, если не секрет?
Офлайн
Art-masterНе секрет. есть такой прибор Labjack U6. Данный прибор считывает аналоговый сигнал например с термопары , или термометра. Вот нужно сохранить эти значание в файл.
Проверьте, точно ли у вас такая папка есть на диске. Просто на данной строке (которая указана в traceback) находится код, который проверяет файл с датой в если он есть, то он запишет уже в существующий файл, если нет, то откроет новый. Так вот он проверяет наличие этого файла именно в папке D:\Kanal1. Если ее нет, то точно вылетит ошибка.И еще: мне просто интересно, что это за скрипт и зачем он, если не секрет?
Отредактировано Roman_st (Окт. 30, 2014 15:43:21)
Офлайн
А, у вас там число… Я просто не знал, что это показания температуры. Вот.
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)
Офлайн
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)
Офлайн