Сохранить пользовательские данные после ввода - PullRequest
0 голосов
/ 22 августа 2010

Я делаю программу на Python и хочу проверить, запускают ли ее пользователи впервые (firstTime == True). Однако после его запуска я хочу навсегда изменить firstTime на False. (Есть другие переменные, которые я хочу использовать для ввода, которые останутся, если это первый запуск, но это должно быть решено таким же образом).

Есть ли лучший способ, чем просто чтение из файла, который содержит данные? Если нет, как я могу найти, откуда файл запускается (поэтому данные будут в том же каталоге)?

Ответы [ 2 ]

3 голосов
/ 22 августа 2010

Если вы хотите сохранить данные, они «в конечном итоге» будут к дисковым файлам (хотя могут быть промежуточные этапы, например, через сеть или систему баз данных, в конце концов, если данные будут постоянными, они будут где-то в дисковых файлах).

Чтобы «узнать, где вы находитесь»,

import os
print os.path.dirname(os.path.abspath(__file__))

Есть варианты, но это основная идея.__file__ в любом скрипте или модуле .py указывает путь к файлу, в котором находится этот файл (конечно, не будет работать в интерактивной командной строке, поскольку в этом случае файл не задействован; -).

Модуль os.path в стандартной библиотеке Python имеет много полезных функций для работы со строками пути - здесь мы используем две: abspath, чтобы дать абсолютную (не относительную) версию пути файла, поэтому у вас нетзаботиться о том, каков ваш текущий рабочий каталог;и dirname для извлечения только имени каталога (фактически, всего пути к каталогу ;-) и удаления правильного имени файла (вам все равно, является ли имя модуля foo.py или bar.py, только в каком каталоге он находится; -.)

0 голосов
/ 22 августа 2010

Достаточно просто создать файл в том же каталоге, если программа запускается в первый раз (конечно, этот файл может быть удален для повторного запуска при первом запуске, но иногда это может быть полезно):

firstrunfile = 'config.dat'
if not  os.path.exists(firstrunfile):
    ## configuration here
    open(firstrunfile,'w').close() ## .write(configuration)
    print 'First run'
    firstTime == True
else:
    print 'Not first run'
    ## read configuration
    firstTime == False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...