2015-03-27 3 views
1

Я хочу создать небольшую базу данных, в которой я буду хранить некоторые данные. Поскольку это часть модуля, который будет настроен, я должен учитывать, что файл базы данных еще не создан, поэтому я должен его создать.Pickle: Чтение и создание пустых файлов

Я думал о выполнении:

with f as open("fname", "rwb"): 
    file = pickle.load(f) 

Использование Rwb я могу и писать, и читать, и создать файл, если он еще не существует. Но если я это сделаю, поскольку файл пуст, он будет raise EOFError. Должно ли я except это исключение как EOFError и выгрузить значение None в файл или может ли оно повысить по какой-либо другой причине? Если это последнее верно, что мне тогда делать?

ответ

4

Я бы инкапсулировать это в try/except:

try: 
    with open('fname', 'rb') as f: 
     file = pickle.load(f) 
    # The above will not raise EOFError, even if it's empty, so you'll need more code here that could cause that. 
except IOError: 
    # The file cannot be opened, or does not exist. 
    # Initialize your settings as defaults and create a new database file. 
except EOFError: 
    # The file is created, but empty so write new database to it. 
Смежные вопросы