Я написал скрипт на python, который выполняет следующие операции:
- Принимает путь к папке в качестве входного файла, который может содержать множество дочерних каталогов с файлами .json в них
- Нагрузкифайлы .json из всех папок одну за другой и построчно читайте каждый файл, разбирайте их по ключам, списку значений и записывает в файл Excel.
Этот сценарий отлично работает, когда я запускаю его из командынезамедлительный.Но я хочу поделиться этим с моей командой в виде исполняемого файла, я использовал pyinstaller, чтобы преобразовать его в исполняемый файл.Именно тогда я получаю сообщение об ошибке
RecursionError: превышена максимальная глубина рекурсии
Я обнаружил, что ошибка вызвана хвостовой рекурсией.Я новичок в Python, поэтому мне трудно переписать эту функцию.Пожалуйста, предложите способы переписать эту хвостовую рекурсивную функцию.
import json
import codecs
import itertools
import os
import sys
from time import sleep
from datetime import datetime
import dateutil.parser
from openpyxl import Workbook
def load_json_from_directories(root_path, cur_path, asset_code):
for filename in os.listdir(cur_path):
if os.path.isfile(os.path.join(cur_path, filename)):
if os.path.splitext(filename)[1] == '.json':
print('Processing...'+filename)
load_json_line(os.path.join(cur_path, filename), asset_code)
else:
print('Not a json file! Skipping...'+filename)
elif os.path.isdir(os.path.join(cur_path, filename)):
load_json_from_directories(root_path, os.path.join(cur_path, filename), asset_code)
else:
sys.exit("Should never reach here.")