如何解决在下面的代码错误“已达到最大递归深度”?

问题描述 投票:0回答:1

我已经在python,做以下操作编写的脚本:

  1. 需要的文件夹路径可能包含在它们上传.json文件很多子目录输入
  2. 加载所有文件夹中一招一式逐行读取每个文件路线,以.json文件解析他们进入键,值列表,并写入Excel文件。

当我从命令提示符下运行该脚本工作正常。但我想分享给我的团队为可执行文件,我已经使用pyinstaller将其转换为一个可执行文件。这时候,我遇到了错误

RecursionError:最大递归深度超过

我发现该错误是因为一个功能是尾递归的。我是新来的蟒蛇,所以我发现很难改写这个功能。请建议的方式来改写这个尾递归函数。

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.")
python json tail-recursion
1个回答
0
投票

而不是手动执行此操作,您可以使用现有的功能:

from pathlib import Path

for json_path in Path('.').glob('**/*.json'):
    # code to handle jsons here
    print(json_path)
© www.soinside.com 2019 - 2024. All rights reserved.