IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Calcul scientifique Python Discussion :

Récupérer des variables à partir d'un fichier txt


Sujet :

Calcul scientifique Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Récupérer des variables à partir d'un fichier txt
    Bonjour,

    Je débute sur le python après avoir fait du C. Je souhaite réaliser un programme qui fait divers calculs de physique en fonction des atomes du milieu choisi. Mon code marche plutôt bien, mais je dois entrer manuellement les paramètres du milieu me servant pour mon calcul.

    Du coup, je voudrais faire un document texte recensant plusieurs types de milieux avec les différents paramètres tel que :

    Carbone,6,12 ...
    Oxygene,8,16 ...
    ...

    Je souhaiterais pouvoir taper Carbone par exemple après avoir lancé mon code et que les valeurs qui suivent soient automatiquement transférées à des variables pour être utilisées dans mon calcul.

    J'ai déjà cherché pas mal sur les forums, il y a pas mal de choses qui ressemblent mais j'ai jusque là été incapable de comprendre comment régler ce souci...
    Voici ce que j'ai essayé de faire pour le moment avec les informations piochées sur internet ...
    Merci d'avance pour l'aide et l'indulgence pour ma médiocrité



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    from math import *
    import os
    import matplotlib.pyplot as plt
    import numpy as np
     
    atome=open("atomes.txt", "r")
     
     
    mode=str(input("Connaissez vous les caractéristiques du milieu ? (y/n)"))
     
    if mode=="y":
        zcible=int(input("Numero atomique de la cible ?"))
        ro=float(input("Masse volumique du matériau cible ?"))
        acible=int(input("Nombre de masse de la cible?"))
     
    if mode=="n":
        atcible=str(input("Quel est le nom de l atome cible?"))
        ligne = atome.split("\n")
        colonne = atome[i].split(',')
        entity = colonne[0]
        listez = colonne[1]
        listea = colonne[2]
        listero= colonne[3]
        i = 1
        while i < len(ligne):
            if atcible==entity:
                zcible=listez
                acible=lista
                rocible=listero
     
     
    atome.close()

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 73
    Points : 142
    Points
    142
    Par défaut
    Bonjour.

    Vu le fichier texte, je partirais bien sur du CSV, qui a l 'avantage de gérer tout seul les détails techniques (encodage, saut de ligne, délimiteurs, etc.)

    Sur le principe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SI (...)
       Lire le fichier CSV
       POUR CHAQUE ligne du fichier
          SI le premier champ = nom de l atome demandé
             affectation des variables
             sortie de la boucle

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci de votre réponse.
    Je suis passé en CSV, mais je pense que ma formulation ne marche pas.
    J'avais également essayé quelque chose qui ressemble plus à ce que vous dites soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    atome=open("atomes.csv", "r")
    atcible=str(input("Quel est le nom de l atome cible?"))
    id = []
    for ln in atome:
        if ln.startswith(atcible):
            ln.split(',')
            id.append(ln[2:])
    print(id)
    atome.close
    Ca me permet d'afficher la ligne voulue parmi mon code. Par contre, pour la spliter et attribuer chaque variable, ça reste énigmatique.

  4. #4
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    Je ne suis pas sur d'avoir bien compris le sujet mais pour ce qui est de stocker des informations j'aime bien json.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    with open("fichier.json") as f:
    	atome = json.load(f)

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 73
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par tstky Voir le message
    Bonjour,

    Merci de votre réponse.
    Je suis passé en CSV, mais je pense que ma formulation ne marche pas.
    J'avais également essayé quelque chose qui ressemble plus à ce que vous dites soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    atome=open("atomes.csv", "r")
    atcible=str(input("Quel est le nom de l atome cible?"))
    id = []
    for ln in atome:
        if ln.startswith(atcible):
            ln.split(',')
            id.append(ln[2:])
    print(id)
    atome.close
    Ca me permet d'afficher la ligne voulue parmi mon code. Par contre, pour la spliter et attribuer chaque variable, ça reste énigmatique.
    Je pensais à utiliser le CSV avec Python (voir le lien que j'avais posté), pas à renommer le fichier

    Le code est un bon début. Maintenant il faudrait revoir l'utilisation de Chaine.split(sep), qui renvoie un tableau...

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Oups, pardon pour le CSV...

    J'avais déjà utilisé des fichiers .csv pour faire du tri de la même manière en C donc je pensais que ça pourrait faciliter juste en changeant de format. Un espoir de fou
    Je vais étudier ça alors merci beaucoup pour les liens !

    Je reviens ici quand j'aurais avancé !

Discussions similaires

  1. Récupérer des données à partir d'un fichier EXCEL
    Par cati_78 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/04/2009, 20h21
  2. Réponses: 5
    Dernier message: 17/06/2008, 17h05
  3. Réponses: 2
    Dernier message: 26/01/2007, 14h58
  4. Réponses: 4
    Dernier message: 19/03/2006, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo