Изменить жестко закодированные значения в Python 3 - PullRequest
0 голосов
/ 20 ноября 2018

Я хотел бы изменить жестко закодированные значения в моем коде.Я хотел бы, чтобы код заменял и изменял жестко закодированные значения в зависимости от того, сколько раз он выполняется.Начиная с:

x=1

В следующий раз, после его запуска, в самом коде я хотел бы видеть в редакторе кода:

x=2

Он автоматически изменитЗначения кода без участия человека, поэтому третий раз его запуска:

x=3

И все это делается только при запуске скрипта, никакого взаимодействия с человеком вообще.Есть ли простой способ?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Вы можете просто записать в четко определенный вспомогательный файл:

# define storage file path based on script path (__file__)
import os
counter_path = os.path.join(os.path.dirname(__file__), 'my_counter')
# start of script - read or initialise counter
try:
    with open(counter_path, 'r') as count_in:
        counter = int(count_in.read())
except FileNotFoundError:
    counter = 0

print('counter =', counter)

# end of script - write new counter
with open(counter_path, 'w') as count_out:
        count_out.write(str(counter + 1))

. Рядом с вашим сценарием будет храниться вспомогательный файл, содержащий дословно counter.

 $ python3 test.py
 counter = 0
 $ python3 test.py
 counter = 1
 $ python3 test.py
 counter = 2
 $ cat my_counter
 3
0 голосов
/ 20 ноября 2018

Использование анализатора конфигурации для сохранения счетчика прогонов в файле

import configparser

config = configparser.ConfigParser()
config_fn = 'program.ini'

try:
    config.read(config_fn)
    run_counter = int(config.get('Main', 'run_counter'))
except configparser.NoSectionError:
    run_counter = 0
    config.add_section('Main')
    config.set('Main', 'run_counter', str(run_counter))
    with open(config_fn, 'w') as config_file:
        config.write(config_file)

run_counter += 1
print("Run counter {}".format(run_counter))
config.set('Main', 'run_counter', str(run_counter))
with open(config_fn, 'w') as config_file:
        config.write(config_file)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...