Я хочу создать списки времени гонщика в отдельном файле, используя код в другом файле Python - PullRequest
0 голосов
/ 25 октября 2019

enter code here По сути, я хочу иметь 2 разных файла, один с кодом, другой со временем. Каждый раз, когда я ввожу имя бегуна, я хочу, чтобы оно было либо

A. Создайте новое имя и время. Вот так: runner1 = [23:43:15, 18:14:16]

ИЛИ

B. Обновите информацию о бегунах и добавьте к ней время Примерно так: runner1 = [23:43:15, 18:14:16] but add 19:16:18 to it

Но мне действительно нужно сохранить его в другой файл, так что даже если я выключу программу, она все равно сохранится. Все должно быть обновлено, никакие новые списки не должны создаваться (если только это не существует)

Любая помощь будет действительно цениться, поскольку я потерял бесчисленные часы сна, пытаясь это сделать! Вот код, который у меня уже есть:

Racename = input("Name of the race")
runnerstxt = open("runners.py", "a")
runnerstxt.write(Racename + '\n')
while True:
  runnernameandtime = []
  runnerName = input("What was the racer's name? ")
  runnernameandtime.append(runnerName)
  runnerTime = input("What was the racer's time? ")
  runnernameandtime.append(runnerTime)
  runnerstxt.write(str(runnernameandtime))
  runnerstxt.write("\n")
  runnernameandtime.clear()```

1 Ответ

1 голос
/ 25 октября 2019

Предположим, что все ваши данные будут храниться в файле с именем race_data.pickle. Мы будем хранить все данные в одном словаре, а затем сможем получить доступ ко всему, что было ранее сохранено.

import pickle
# Check if a file exists

try:
    # Previous file found, loading it
    race_data = pickle.load(open("race_data.pickle", "rb"))
except (OSError, IOError) as e:
    race_data = {}

Racename = input("Name of the race")
#Check if the race has previously been registered
if Racename not in race_data.keys():
    #Add if not registered
    race_data[Racename] = {}

while True:
    runnerName = input("What was the racer's name? ")
    #Check if the runner has been registered
    if runnerName not in race_data[Racename].keys():
        #Add empty if not registered
        race_data[Racename][runnerName] = []
    #Add the runner's time in the list
    runnerTime = input("What was the racer's time? ")
    race_data[Racename][runnerName].append(runnerTime)

    #Save the latest data into the pickle
    with open("race_data.pickle", "wb") as f:
        pickle.dump(race_data, f)

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

{
 'Race1': {
            'Racer1': ['3', '10'], 
            'Racer2': ['5', '22'], 
            'Racer3': ['20']
           }, 
 'Race2': {
            'Racer4': ['10'], 
            'Racer1': ['20'], 
            'Racer10': ['44']
           }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...