json TypeError:应为str、bytes或os.PathLike对象,而不是方法,试图获取存档

dy2hfwbg  于 2023-10-21  发布在  其他
关注(0)|答案(1)|浏览(104)

我目前正试图构建和应用程序来管理预算或费用,我是python的新手,所以我从一个朋友那里得到了帮助,我对编码的所有过程都不太熟悉。所以,我为用户创建了一个类,另一个用于加载列表,另一个用于将列表写入(注入)在用户类中创建的JSON中。我希望我解释清楚了。
这是用户代码:

import os  
import json


class Usuario:

        def __init__(self,nombre):
            self.nombre = nombre
            self.verify_json()
            print(f"Te damos la bienvenida {self.nombre}")

            
        def get_nombre(self):
            return self.nombre
        
        def save_json(self,nombre):
            with open('data/'+nombre +"_usuario.json","w") as f:
                json.dump(self.nombre,f,indent=4)

        def verify_json(self):
            if not os.path.exists('data/'+self.nombre + '_usuario.json'):
                self.save_json(self.nombre)
                                
            else:
                with open('data/'+self.nombre + '_usuario.json', 'r') as file:
                    return json.load(file)
                    
                    
                
        def get_json(self):
            dir = 'data/'+ self.nombre + '_usuario.json'
            with open(dir, 'r') as file:
                return json.load(file)

我已经改变了几次,因为当我从另一个脚本调用JSON文件时,我得到了一个错误,它不是一个str。现在,从这里我叫它:

class w_jason():

    def __init__(self,archivo_json,lista_cuentas, nombre):
        self.nombre = nombre
        self.archivo_json = archivo_json
        self.lista_cuentas = lista_cuentas
        self.meses = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio',
                      'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre']
        
        self.archivo_user = self.leer_json()
        
    
    def listas_in_json(self):
        self.cuentas_dict = {self.lista_cuentas[i]: [] for i in range(len(self.lista_cuentas))}
        self.meses_dict = {self.meses[i]: self.cuentas_dict for i in range(len(self.meses))}
        return self.meses_dict
    
    def leer_json(self):
        with open(self.archivo_json, 'r') as file:
            return json.load(file)
       
    
    def edit_json(self):      
       with open(self.archivo_json, 'w') as file:
            json.dump(self.archivo_user, file, indent=4)

这个类接收已经创建的json归档文件的路径,但是我得到了错误:

Traceback (most recent call last):
  File "/Users/jabac/Desktop/work/proyecto_cuenta/scripts/test.py", line 7, in <module>
    m_json = w_jason(mariana.get_json, marian_cuentas.get_lista_cuentas, mariana.get_nombre)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jabac/Desktop/work/proyecto_cuenta/scripts/write.py", line 19, in __init__
    self.archivo_user = self.leer_json()
                        ^^^^^^^^^^^^^^^^
  File "/Users/jabac/Desktop/work/proyecto_cuenta/scripts/write.py", line 28, in leer_json
    with open(self.archivo_json, 'r') as file:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: expected str, bytes or os.PathLike object, not method

我不知道该怎么办。”我返回了一个带有文件路径的str,但它也给了我同样的错误,现在我试着只返回JSON文件,仍然得到错误。
几分钟前,这个应用程序还在工作,我不知道我做了什么改变了这种行为。
很抱歉,如果这是太长了,并提前感谢!

jutyujz0

jutyujz01#

我解决了它,对不起,伙计们,我没有把()后调用的方法。

相关问题