модуль полки даже не создавая полки - PullRequest
0 голосов
/ 27 сентября 2019

Я новичок в stackoverflow и экспериментирую с Python, в настоящее время просто пробую учебные примеры.Испытал замечательную кривую обучения, но полностью застрял со следующим (работа под windows 10):

import shelve
s = shelve.open("test")
Traceback (most recent call last):
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\dbm\dumb.py", line 82, in _create
    f = _io.open(self._datfile, 'r', encoding="Latin-1")
FileNotFoundError: [Errno 2] No such file or directory: 'test.dat'

Было бы здорово получить некоторую помощь, чтобы решить эту проблему.

Во времяПри обработке вышеуказанного исключения произошло другое исключение:

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Как прочитать сообщение об ошибке

В общем, сообщения об ошибках сделают все возможное , чтобы сообщить вам, что не так.В случае с python вы, как правило, начинаете снизу;здесь

Нет такого файла или каталога: 'test.dat'

точно сообщает, почему выдается ошибка: test.dat не существует.

Далее вы читали бы вверх по трассировке стека , пока мы не дойдем до чего-то, что мы либо поняли, либо написали недавно, и мы попытаемся разобраться в сообщении об ошибке оттуда.

Как устранить ошибку

  • Является ли заявленная проблема понятной ?
    • Да, мы попросили программное обеспечение сделать что-то с файлом (.dat?) Под названием «test», поэтому мы, по крайней мере, знаем, что, черт возьми, сообщение об ошибке говорит о .
  • Согласны ли мы с основной предпосылкой ошибки?
    • В частности, имеет ли смысл , что должно иметь значение, существует test.dat или нет ? Чепнер покрывает это.
  • Согласны ли мы с конкретной проблемой, как указано?
    • Например, было бы странно получить такое сообщение об ошибке, когда на самом деле был такой файл.Тогда у нас будет более конкретный вопрос : «Почему программное обеспечение не может найти файл?»Это прогресс.
    • (Обычно ответом будет либо «Потому что он смотрит не в том месте», либо «Потому что у него нет разрешения на доступ к этому файлу».)
  • Прочтите документацию по инструментам и функциям, о которых идет речь.
  • Как мы можем проверить или наше собственное понимание ситуации, или ситуацию, описанную в сообщении об ошибке?
    • В зависимости от контекста это может привести к некоторой пробе и ошибке переписывания нашего кода в
      • распечатке (регистрации) его состояния во время выполнения
      • сделать что-то похожее, но другоеот того, что он делал, что мы более уверены, должно работать.
      • делать что-то подобное, но отличается от того, что он делал, что мы более уверены, должно не работать.
  • Обратиться за помощью.
0 голосов
/ 27 сентября 2019

В Python 3 по умолчанию shelve.open пытается открыть существующую полку для чтения.Вы должны передать явный флаг для создания новой полки, если она еще не существует.

s = shelve.open("test", "c")

Это в отличие от Python 2, где флаг по умолчанию было "c" вместо "r".

...