2013-12-11 3 views
0

У меня возникла ошибка загрузки на мой запрос.py, когда я перезагружаю заявку.DB на моем боте. Это код:Небольшая ошибка на request.py def load():

def load(): 
    claimDB = {} 
    data = open("claim.DB").read().split("\n") 
    for a in data: 
     if a.strip() != "": 
      claimDB[a.split(",")[0]] = a.split(",")[1:] 
    claim.claimDB = claimDB 

После перезагружает он вызывает это: { «шарль»: []} Это правильный способ, которым это должно быть.

Чтобы включить это после перезагрузки: {'charles': ['']} Это неправильный путь.

Что это не должно делать. Я не уверен, как это исправить, чтобы этого не произошло.

+1

Что он должен делать тогда? –

+0

Предположим, что он хранит dict до {'charles': []} – user3089698

ответ

1

Предполагая, что claimDB является список:

def load(): 
    claimDB = {} 
    data = open("claim.DB").read().split("\n") 
    for a in data: 
     aslist = a.split(",") 
     if len(aslist) == 0: 
      pass # Blank Line so skip 
     else 
      claimDB[data[0]] = [a.strip() for a in data[1:] if len(a)] 

# Требование (и) NB если aslist = [ «что-то»,] то aslist [1:] = []

claim.claimDB = claimDB 

Конечно, если ваш claimDB только доступ через код, который вы могли бы сохранить все проблемы с чтением & писать, изменив сохранить и нагрузка до:

import pickle 

def save(claim): 
    """ Save between sessions """ 
    with outfile = open('saveclaims.db' 'wb'): 
     pickle.dump(outfile, claim.claimDB) 
    finally: 
     outfile.flush() 
     outfile.close() 

def load(claim): 
    """ Load saved between sessions """ 
    with infile = open('saveclaims.db' 'rb'): 
     claim.claimDB = pickle.dump(infile) 
    finally: 
     infile.close() 
+0

Его список да: P, когда он добавляет код. претензия.claimDB [пользователь] = требование.клаймDB [пользователь] + [имя] – user3089698

+0

А я никогда раньше не использовал модуль рассола. Но на самом деле это гораздо легче сделать. – user3089698

+0

Это намного более гибкий подход, и в любом случае стоит изучить рассол. –

1

Это происходит, когда у вас есть запятые. То есть, если ваш файл «claim.DB» содержит что-то вроде этого:

 
charles, 

Один способ решить это, чтобы лишить хвостовых запятые, как это:

def load(): 
    claimDB = {} 
    data = open("claim.DB").read().split("\n") 
    for a in data: 
     a = a.strip(', \n\t') 
     if a != "": 
      claimDB[a.split(",")[0]] = a.split(",")[1:] 
    claim.claimDB = claimDB 
+0

Приятно, я попробую. Спасибо <3 – user3089698

+0

То, как он выглядит с большим количеством имен в [], похоже на список {'charles': ['test', 'name', 'tim']}: P – user3089698

Смежные вопросы