簡體   English   中英

如何解決以下代碼中的“達到最大遞歸深度”錯誤?

[英]How to fix “Maximum recursion depth reached” error in the below code?

我已經在python中編寫了執行以下操作的腳本:

  1. 將文件夾路徑作為輸入,其中可能包含許多帶有.json文件的子目錄
  2. 從所有文件夾中依次加載.json文件,並逐行讀取每個文件,將它們解析為鍵,值列表,然后寫入excel文件。

當我從命令提示符下運行該腳本時,該腳本運行良好。 但我想將其作為可執行文件共享給我的團隊,我已經使用pyinstaller將其轉換為exe。 那就是我遇到錯誤時

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.")

無需手動執行此操作,您可以使用現有功能:

from pathlib import Path

for json_path in Path('.').glob('**/*.json'):
    # code to handle jsons here
    print(json_path)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM