Меня смущает то, как должно происходить казнь. Я не понимаю, почему код не выполняется. Я использую полку [дубликат]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»