Программа расписания для отслеживания дней / часов сработала? - PullRequest
1 голос
/ 17 мая 2009

Скажем, я делаю программу, которая отслеживает дни, когда я работал, и часы, которые я работал, буду ли я использовать словарь? И как бы я отличил понедельник на неделе 1 от понедельника на неделе 2? Как получить эту информацию для хранения этой информации после закрытия программы? (Язык Python)

Ответы [ 3 ]

0 голосов
/ 17 мая 2009

Словарь - это хороший способ хранить данные во время работы вашей программы.

Есть несколько способов добавить некоторую постоянность данных (так что это происходит после закрытия программы). Модуль Python pickle и shelve полезны и просты в использовании. Одна из проблем заключается в том, что вы не можете легко проверить данные вне программы Python. Существуют также модули для чтения и записи текстовых файлов в форматах JSON и XML, а JSON особенно легко читать в текстовом редакторе. Если вы еще не обладаете достаточными знаниями, таких баз данных, как MySQL, гораздо больше, чем нужно для персональной программы, о которой вы упомянули, и если вы не хотите тратить время на изучение того, как их использовать, вам следует воспользоваться более простым решением.

Что касается понедельника недели 1 или недели 2, у вас есть много вариантов. Вы можете использовать фактическую дату (это кажется мне хорошей идеей), или вы можете ввести словарь с помощью кортежей, например («Понедельник», 1). Основное правило заключается в том, что ключи словаря должны быть неизменяемыми (целые, строки, кортежи - которые содержат только неизменяемые объекты и т. Д.), Но не должны (словари, списки и т. Д.).

0 голосов
/ 18 мая 2009

Я использовал противоположный подход при разработке этого приложения для собственного использования.

По моему опыту, самая большая проблема с приложениями для хронометрирования - это ввод данных. Поэтому я решил заставить свое приложение использовать самый простой и гибкий инструмент ввода данных: текстовый редактор. Я храню заметки в текстовом файле и смешиваю записи о времени, поэтому отрывок выглядит так:

Monday 5/10/09

release script ok this week
open a case on the whole code-table-foreign-key thing

- CUS1 2.0 Generate and release version 1.0.45.

need to get dma to spec out the RESPRB configuration, see case 810
MH section complete - one to go!

- CUS2 4.0 Configure and test Mental Health section.

Tuesday 5/11/09

... and so on

Я последовательно начинаю каждый день с правильного заголовка, и формат реальных записей времени, как вы можете видеть, довольно прост. Простой сканер и конечный автомат - это все, что нужно для извлечения данных - в основном, я просто ищу строки, которые начинаются с дня недели или дефиса, и игнорирую все остальное.

Чтобы программа не работала слишком медленно при разборе файлов заметок, я создаю новый файл заметок каждый год. (Даже в конце декабря процесс синтаксического анализа занимает не более 1/16 секунды.)

Я бы не стал делать это таким образом, если бы мне пришлось обрабатывать записи хронометража сотен людей, потому что пользователь должен иметь некоторую подсказку, и через некоторое время время разбора начнет складываться. С другой стороны, хранение этих данных в удобочитаемом текстовом файле, в котором я могу хранить другие материалы (и держать их под контролем версий, diff и т. Д.), Просто невероятно полезно.

0 голосов
/ 17 мая 2009

Я бы, вероятно, создал бы объект расписания для каждой недели или периода оплаты. Каждый объект расписания может иметь набор дней, с отработанными часами или с указанием времени.

В качестве постоянного хранилища для веб-сайта я бы использовал базу данных, подобную mysql. Для приложения, работающего на одной машине, я бы, возможно, использовал pickle или плоскую файловую систему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...