Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2021, 23:20   #11
baitle
 
Регистрация: 24.07.2021
Сообщений: 5
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
baitle, ваш словарь на самом деле хранится в файле db_file (точнее, в двух файлах: db_file.dat и db_file.dir). Скрипт words_db.py создает базу данных и заполняет некоторой информацией. Когда вы в скрипте start_programm.py добавляете слово, то оно добавляется в базу данных, но не в скрипт инициализации words_db.py.
Спасибо, очень интересно, а где прочитать про механизм вот этого заполнения-хранения, что и как происходит.
baitle вне форума Ответить с цитированием
Старый 18.08.2021, 12:53   #12
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Раз используете shelve, то можно читать про него справку Питона - https://docs.python.org/3/library/shelve.html.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 18.08.2021, 22:18   #13
baitle
 
Регистрация: 24.07.2021
Сообщений: 5
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
baitle, ваш словарь на самом деле хранится в файле db_file (точнее, в двух файлах: db_file.dat и db_file.dir). Скрипт words_db.py создает базу данных и заполняет некоторой информацией. Когда вы в скрипте start_programm.py добавляете слово, то оно добавляется в базу данных, но не в скрипт инициализации words_db.py.
Так и не понял как сделать, чтобы введенные в словарь слова через idle записывались в мой словарь words_db.py? Видать какой-то строки в коде не хватает... Или это невозможно?
А нельзя зациклить выполнение программы, а то каждый раз запускать через F5 как-то не комильфо)

Последний раз редактировалось baitle; 18.08.2021 в 22:21. Причина: доп вопрос
baitle вне форума Ответить с цитированием
Старый 18.08.2021, 22:56   #14
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от baitle Посмотреть сообщение
Или это невозможно?
Возможно всё. Но тогда теряется всякий смысл использовать shelve. Вот так можно дописывать слова в скрипт words_db.py:
Код:
def newRecord():
    newkey = input('Ввести новое слово (eng):')
    newvalue = input('Ввести перевод (rus):')
    db[newkey] = newvalue
    rus_words[newvalue] = newkey

    with open('words_db.py', 'r', encoding = 'utf-8') as f:
        lines = f.readlines()

    lines.insert(len(lines) - 1, "db['%s']='%s'\n" % (newkey, newvalue))

    with open('words_db.py', 'w', encoding = 'utf-8') as f:
        for line in lines:
            f.write(line)
Цитата:
Сообщение от baitle Посмотреть сообщение
А нельзя зациклить выполнение программы
Посмотрите код в сообщениях выше - он зациклен с помощью "while True:".
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 18.08.2021, 23:16   #15
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

В дополнение.
В первом сообщении ТС есть скрипт, который проверяет наличие файлов БД.
Последнее состояние БД можно вывести следующим скриптом:
Код:
# test_words_db.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import shelve

# Тестирование наличия файлов и вывод словаря
with shelve.open('db_file') as states:
    for key in states:
        print(key, " - ", states[key])
Таким образом можно увидеть все, включая и дополненные, слова.

PS:
Для начального заполнения словаря можно подготовить текстовый файл, например, в формате:
англ. слово - рус. слово
англ. слово - рус. слово
...
англ. слово - рус. слово

используя Блокнот, а затем прочитать его скриптом и слова записать в БД.
Но это так, для тренировки.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает gets вообще, ни один код не работает с gets, почему? Мaкс Общие вопросы C/C++ 4 26.07.2018 11:49
почему прсер работает на одних сайтах и не работает на других PHP_DELETANT PHP 4 12.02.2016 13:45
Здравствуйте ! в чем проблема,почему почему время исполнения операций не работает ? ion leahu Помощь студентам 6 23.11.2014 19:36
Почему программа на С++ не работает с локальным описанием массива, но работает с глобальным? >>STINGER<< Помощь студентам 4 08.03.2011 09:56
почему интеренет на Xp не работает, а на семерке работает Lenura Windows 18 04.10.2010 12:04