JSON, i can't load Json data from file

Résolu/Fermé
firpic Messages postés 90 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 20 décembre 2022 - 7 sept. 2022 à 11:22
firpic Messages postés 90 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 20 décembre 2022 - 10 sept. 2022 à 10:33

Bonjour,

Je créé un programme en python pour faire un automatisme. Je voudrais faire en sorte que ce bout de programme ouvre le fichier json, lise le contenu puis écrit les nouvelle data dedans sans écrasé le contenu existant. Mais voila que je n'arrive même pas a ouvrir ce fichier alors que quand j'essaye avec un éditer en ligne, cela fonctionne sans aucun problème pour ouvrir le fichier je en comprend pas le problème.

Je préviens aussi que j'ai déjà regarder sur internet pour l'erreur mais chaque correction faite avec se que j'ai adapte me refoule une nouvelle erreur.

Voici le code python :

def json_block_name(blockName):

    blockId = "block.extratexturesblocks."+blockName
    for w in range(len("_")):
        blockName = blockName.replace("_", " ")
    blockName = blockName.title()

    JsonData =  {blockId:blockName}

    with open('../src/main/resources/assets/extratexturesblocks/lang/en_us.json') as lang_en_us:
        JsonDataOpen =  json.load(lang_en_us)

    print(JsonDataOpen)
    print(JsonData) 

Voici l'erreur :

Traceback (most recent call last):
  File "G:\Mon Drive\WorkSpace\etb\auto\main.py", line 60, in <module>
    json_blockstates_model_loot_tables()
  File "G:\Mon Drive\WorkSpace\etb\auto\main.py", line 38, in json_blockstates_model_loot_tables
    json_block_name(block_name)
  File "G:\Mon Drive\WorkSpace\etb\auto\main.py", line 52, in json_block_name
    JsonDataOpen =  json.load(lang_en_us)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\json\__init__.py", line 293, in load
    return loads(fp.read(),
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

et voici le contenu du json :

{
  "block.extratexturesblock.ancient_stone_array": "Ancient Stone Array",
  "itemGroup.extratexturesblocks": "Extra Textures Blocks"
}
A voir également:

1 réponse

yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
7 sept. 2022 à 12:02

bonjour,

tu n'as aucune autre instruction entre la ligne 10 et la ligne 11?

Quand le programme lit et affiche le contenu du fichier (sans json), tout se passe bien?

0
firpic Messages postés 90 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 20 décembre 2022 1
7 sept. 2022 à 20:05

Non, je n'ai pas d'autre instruction entre ces lignes 10 et 11.

J'ai ajouter une ligne pour tester si il arrive a l'ouvrir voici ce qui mes retourné:

<_io.TextIOWrapper name='../src/main/resources/assets/extratexturesblocks/lang/en_us.json' mode='r' encoding='cp1252'>

Voici le code avec la ligne pour juste ouvrir le fichier :

import json
def json_block_name(blockName):

    blockId = "block.extratexturesblocks."+blockName
    for w in range(len("_")):
        blockName = blockName.replace("_", " ")
    blockName = blockName.title()

    JsonData =  {blockId:blockName}

    with open('../src/main/resources/assets/extratexturesblocks/lang/en_us.json') as lang_en_us:
        JsonDataOpen =  json.load(lang_en_us)

    print(JsonDataOpen)
    print(JsonData) 


with open('../src/main/resources/assets/extratexturesblocks/lang/en_us.json') as f:
	print(f)
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > firpic Messages postés 90 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 20 décembre 2022
7 sept. 2022 à 21:15

si tu veux imprimer le contenu d'un fichier:

fil=open('json.txt') 
for x in fil.readlines():
    print(x)
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
7 sept. 2022 à 21:16

ou bien

print(f.readlines())
0
firpic Messages postés 90 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 20 décembre 2022 1 > yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
Modifié le 8 sept. 2022 à 10:39

Merci, maintenant j'arrive a afficher le contenu, mais je n'arrive toujours pas a faire se que je veux

0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > firpic Messages postés 90 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 20 décembre 2022
8 sept. 2022 à 15:00

N'hésite pas à montrer ce qui s'affiche.

Et ainsi?

with open("json.txt") as fyl4:
    ctc=fyl4.readlines()
    print("ctc:",ctc)
    JsonDataOpen =  json.loads("".join(ctc))
    print("JsonDataOpen:",JsonDataOpen)
0