CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[HELP] Python problème écrire dans un fichier JSON

avuxavac
avuxavac
Niveau 1
31 août 2020 à 13:53:13

Salut les kheys,

Je débute en dev j'essaie de générer des valeurs aléatoires dans pyspark et de les écrire dans un fichier JSON. Je génére 100 enregistrements dans mon code mais dans mon fichier JSON j'ai qu'un enregistrement. J'ai un petit soucis lors de l'incrémentation, voici mon code :

import random
import json


fruit = ['banana', 'apple', 'orange']
origine = ['france', 'sweden', 'USA', 'mexico']

def generate():
    for n in range(100):
       ID = n+1
       types_fruit = (random.choice(fruit))
       origine_names = (random.choice(origine))
       return (types_fruit+origine_names)

with open("sales_detail.json", "w") as sales : 
   json.dump(generate(), sales)

Merci pour votre aide :ange:

avuxavac
avuxavac
Niveau 1
31 août 2020 à 14:13:06

:up:

Sneyek
Sneyek
Niveau 12
31 août 2020 à 15:15:55

Prends ce que je te dis avec des pincettes, je suis sur mobile et le formattage est weird.

Dans ta fonction generate la variable ID n’est pas utilisé. Si tu ne l’utilise pas, ne la déclare pas :)
Ensuite tu redéfini tes valeurs à chaque itérations, mais tu return en fin de loop, donc à la fin de la première itération. -> tu auras un str qui sera composé d’un Type et d’une origine de fruit.
Beaucoup de tes parenthèses sont redondantes, tu pourrais retirer les parenthèses qui ne servent pas à call des fonction. Précise les si tu fais des calculs pour les priorités d’exécution et éviter les ambigüité.

 import random
import json


fruit = ['banana', 'apple', 'orange']
origine = ['france', 'sweden', 'USA', 'mexico']

def generate():
    for n in range(100):
       types_fruit = random.choice(fruit)
       origine_names = random.choice(origine)
       yield types_fruit+origine_names

with open("sales_detail.json", "w") as sales : 
   json.dump(generate(), sales) 

Test pour voir si dump accepte un generator sinon remplace l’appel de generate par ‘list(generate())’.

Sneyek
Sneyek
Niveau 12
31 août 2020 à 21:38:50

Juste que cette solution te fais créer un générateur (fonction avec yield).
C’est peut être avancé comme concept, si tu préfère tu peux ajouter une variable de type liste dans ta fonction et y append les valeurs. Ensuite après la loop tu return cette liste.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment