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

Python Discussion :

manipulation de fichiers


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 38
    Par défaut manipulation de fichiers
    Bonjour,

    Je suis débutant en python et je rencontre quelques difficultés. Je voudrais récupérer une valeur dans un fichier et la mettre dans une variable. Je m'explique: dans un fichier, j'ai plusieurs adresses IP les unes en dessous des autres. Toutes celles qui commence par un # ne doivent pas être traitées et pour les autres, le programme doit prendre la première qui trouve (et ne commençant pas par un #) et la mettre dans une variable.

    Quelqu'un aurait-il une solution ou une explication à me fournir?

    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Sur le pouce,

    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
     
    # -*- coding: utf-8 -*-
     
    def read_IP(f):
        objfile = open(f, "r")
        while 1:
            line = objfile.readline()
            if line == "":
                # fin de fichier
                objfile.close()
                return False
            elif not line.startswith("#"): 
                objfile.close() 
                return line
     
    print read_IP("Mon/fichier/IP.txt")
    Ca devrait le faire.

    vincent

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 53
    Par défaut
    ou bien (je trouve ça un peu plus lisible)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def read_IP(f):
        v = ""
        with open(f, 'r') as file:
            for line in file.read().split():
                if line[0] is not "#":
                    v = line
                    break
        if v:
            return v
        else:
            return "unknown" # ou lance une exception
    split() a tué les lignes blanches.

  4. #4
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 38
    Par défaut
    Merci les gars c'est exactement ce que je voulais !

    Juste pour miawaw, il ne fallait pas mettre le "break" sinon aucune adresse n'est retournée

    En tout cas c'est sympas d'avoir répondu si vite les gars

  5. #5
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 38
    Par défaut
    Maintenant je cherche à réécrire la valeur récupérée dans un autre fichier à un emplacement précis, est-ce possible?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 53
    Par défaut
    le peu que je sais c'est:
    *ou alors tu réécris tout (c'est pas ce que tu veux faire)
    *ou bien tu sais que ton fichier est écrit de la manière suivante:

    bloctype1 bloctype2 bloctype3 bloctype1 bloctype2 bloctype3 bloctype1 bloctype2 bloctype3 etc.

    En Java, tu dois utiliser un objet de type RandomAccessFile.
    Alors tu peux placer 'la pointe d'éécriture' au début de la zone à modifier et écrire la valeur. En "images", ça donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    bloctype1 bloctype2 bloctype3 bloctype1 bloctype2 bloctype3
              ^
              écrire ici bloctype2'
    et ça devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bloctype1 bloctype2' bloctype3 bloctype1 bloctype2 bloctype3
    j'espère que tu as un peu compris ce que je voulais dire.

    En Python, ouvrir le fichier en mode "r+b" ou "w+b" ou ....
    Ici tu vois comment mettre ça en oeuvre.
    Je ne peux t'aider plus.
    A mon avis, tu trouveras plus d'info sur dans la documentation, peut-être sur cette page.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Manipulation de fichier (copier, supprimer, déplacer)
    Par Guigui_ dans le forum Général Python
    Réponses: 1
    Dernier message: 21/10/2004, 10h26
  2. Manipulation des fichiers
    Par monsau dans le forum Langage
    Réponses: 7
    Dernier message: 21/09/2004, 17h45
  3. [LG]Manipulation de fichiers
    Par yffick dans le forum Langage
    Réponses: 29
    Dernier message: 10/01/2004, 15h04
  4. Manipulation de fichiers - gestion d'extensions
    Par ulukai dans le forum Linux
    Réponses: 13
    Dernier message: 02/07/2003, 15h28
  5. Réponses: 2
    Dernier message: 18/01/2003, 17h06

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