Это сегмент кода, который начинается со строки 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
-