Это сегмент кода, который начинается со строки 261 в моем файле.
if __name__ == '__main__':
# main()
print('Checkpoint 0')
createShelve()
print('Checkpoint 1')
data = loadShelve()
print('Checkpoint 2')
for key in data.keys():
print(key)
во время отладки я добавил в createShelve несколько операторов печати, и это выглядит именно так:
def createShelve():
global SHELVE_FILE
filenames = getFilenames()
data = {}
print('Empty Data Now')
for filename in filenames:
build_data(filename, data=data)
print('loaded file {}'.format(filename))
print('Loading with {} keys'.format(len(data.keys())))
recursionLimit = sys.getrecursionlimit()
sys.setrecursionlimit(12657) # used manual binary search to compute this
print('Checkpoint A')
try:
print('Checkpoint B')
with shelve.open(SHELVE_FILE) as result:
result.update(data)
print('File now contains data with {} keys'.format(len(data.keys())))
except RecursionError:
print('****Maximum recursion limit reached****')
for ext in ('.bak', '.dat', '.dir'):
print('Deleting {}'.format(filename + ext))
os.unlink(filename + ext)
print('Checkpoint C')
sys.setrecursionlimit(recursionLimit)
print('Checkpoint D')
Указывая непосредственно на проблему, у меня есть 4 основных оператора печати в контрольных точках A, B, C и D. Печатаются только A и B, и я до сих пор не могу придумать причину, по которой элемент управления выполнением пропустит эти строки. Также для числовых контрольных точек на уровне модуля достигается только «Контрольная точка 0».
Какие усилия я приложил? Единственный элемент этого кода, который я раньше не использовал, — это функции установки предела рекурсии. Я не знаю, могут ли они иметь какой-то эффект, вызывающий это. Я проверил руководство Python и не вижу ничего, что могло бы вызвать какой-либо эффект. Если вы заметили по напечатанным контрольным точкам, это, по-видимому, предполагает, что был выполнен только один из вызовов setrecursionlimit.
РЕДАКТИРОВАТЬ: Я пытаюсь прояснить свой вопрос. После запуска программы она выполняется и выдает следующий вывод, но останавливается на этом перед закрытием без каких-либо ошибок. Структура данных, которую я пытаюсь сохранить, представляет собой словарь ключей, которые являются путем к файлам HTML и соответствующему дереву данных, обработанных из файлов HTML. Вопрос в этой ссылке в основном о той же проблеме. Я буду искать реализацию решения там. Поэтому я закрываю этот вопрос
Сокращенный вывод:
Checkpoint 0
Empty Data Now
loaded file .\json_data\SomeFile001.html
loaded file .\json_data\SomeFile002.html
loaded file .\json_data\SomeFile003.html
loaded file .\json_data\SomeFile004.html
loaded file .\json_data\SomeFile005.html
loaded file .\json_data\SomeFile006.html
loaded file .\json_data\SomeFile007.html
loaded file .\json_data\SomeFile008.html
loaded file .\json_data\SomeFile009.html
loaded file .\json_data\SomeFile010.html
loaded file .\json_data\SomeFile011.html
loaded file .\json_data\SomeFile040.html
loaded file .\json_data\SomeFile041.html
Loading with 41 keys
Checkpoint A
Checkpoint B
Подробнее здесь: https://stackoverflow.com/questions/789 ... ot-underst
Меня смущает то, как должно происходить казнь. Я не понимаю, почему код не выполняется. Я использую полку [дубликат] ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Я не понимаю, почему это так (6, 8). Разве это не должно быть (5, 9)? [закрыто]
Anonymous » » в форуме Python - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-