Меня смущает то, как должно происходить казнь. Я не понимаю, почему код не выполняется. Я использую полку [дубликат]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Меня смущает то, как должно происходить казнь. Я не понимаю, почему код не выполняется. Я использую полку [дубликат]

Сообщение Anonymous »

Это сегмент кода, который начинается со строки 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»