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 :

Problème ecriture de fichier txt


Sujet :

Python

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2012
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 21
    Points : 13
    Points
    13
    Par défaut Problème ecriture de fichier txt
    Bonjour à tous,

    Je me relance dans python après une forte pause et j'ai perdu de vieilles habitudes (syntaxique je suppose ^^')

    Je cherche à traiter rapidement avec un petit script les caractères d'une chaine d'un fichier txt.

    Voici mon code :

    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
     
    #!/usr/bin/python3.1
    fichier1=open('fichier1.txt','r')
    fichier2=open('fichier2.txt','w')
    while 1:
    	var1=fichier1.readline
    	if var1=="":	
    		break
    	cpt=len(var1)
    	i=0
    	while i<nb:
    		fichier2.write(int(var[i]))
    		i=i+1
    fichier1.close()
    fichier2.close()
    ALors, je commence à ouvrir en lecture mon premier fichier.
    Je lis le contenu et enregistre les chaines ligne par ligne.
    Si la chaine est vide je sors car le fichier est fini.
    J'enregistre la taille de la chaine dans une variable "cpt" avec la fonction len.
    Je fais une boucle qui enregistre dans mon fichier 2 la valeur numérique de mes caractères.

    Et j'ai comme retour :

    Traceback (most recent call last):
    File "./translate.py", line 8, in <module>
    cpt=len(var1)
    TypeError: object of type 'builtin_function_or_method' has no len()
    J'ai un peu de mal à voir d'où viens le soucis... si quelqu'un pouvait me réveiller mon python en venant par là !

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Points : 321
    Points
    321
    Par défaut
    Bonjour,

    en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var1=fichier1.readline
    Tu affecte à la variable var1 la méthode readline de l'objet fichier1 et non
    pas le résultat de cette méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var1=fichier1.readline()
    devrait mieux fonctionner...

  3. #3
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Regardes la différence:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Python 2.6.5 (r265:79063, Oct  1 2012, 22:07:21) 
    [GCC 4.4.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> f = open('mat.py', 'r')
    >>> print f.readline
    <built-in method readline of file object at 0xb76ab2e0>
    >>> print f.readline()
    # -*- coding: utf-8 -*-
    Je pense qu'il y a une autre erreur (au moins) dans ton code
    nb n'est défini nulle part.

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2012
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Pour le nb ce n'est qu'une erreur de recopie du code sur mon post ^^

    Merci pour la correction du readline, ça m'avance bien !

    J'ai encore une petite erreur de type ...

    lorsque je fais : fichier2.write(ord(var[i]))
    Il me retourne : TypeError: must be str, not int

    Cependant il s'agit bien d'un caractère et non d'un entier, lorsque je print var[i] j'obient bien le caractère.
    Une idée ?

  5. #5
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    var[i] oui mais pas ord()

    utilises:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print type(ord(var[i]))

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2012
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Arf euh oui en effet, je me suis perdu.
    Mais le but est d'enregistrer les chiffres dans le fichier, ça ne fonctionne pas avec fichier2.write(ord(var[i])) ?

  7. #7
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    avec str()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fichier2.write(str(ord(var[i])))

  8. #8
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Après coup, en relisant ton code de départ, tu semble vouloir enregistrer les valeurs entières que représente les charactères du texte.

    Dans ce cas c'est bien int() et non pas ord()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    >>> print str(2)
    2
    >>> print str('2')
    2
    >>> print int('2')
    2
    >>> print ord('2')
    50

    Et si ce sont ces valeurs entières que tu veux enregistrer, il faudra passer par pickle.

    ex:
    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
     
    import pickle
     
    FILE = 'fichier1.txt'
     
    with open(FILE, 'r') as inf:
        line = inf.readline()
    print line
     
    numbs = [int(i) for i in line.strip()]
     
    with open('values', 'w') as outf:
        pickle.dump(numbs, outf)
     
    with open('values', 'r') as inf:
        numbs = pickle.load(inf)
    print numbs

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2012
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Merci bien !
    Il fallait en effet caster en str, ce qui me semble logique en fin de compte puis-ce qu'il est question d'un fichier texte..

    Merci de votre aide à tout les deux

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

Discussions similaires

  1. [Débutant] Problème Ecriture dans fichier .txt
    Par Patatattak dans le forum VB.NET
    Réponses: 1
    Dernier message: 15/07/2011, 20h02
  2. [C++] lecture/ecriture dans fichier txt/binary
    Par vince3320 dans le forum C++
    Réponses: 6
    Dernier message: 28/09/2007, 18h00
  3. Problèmes Ecriture dans Fichiers Texte
    Par JmL40 dans le forum Langage
    Réponses: 13
    Dernier message: 26/09/2007, 14h04
  4. [Tableaux] Problème sur ouverture fichier txt
    Par yaum4444 dans le forum Langage
    Réponses: 7
    Dernier message: 15/12/2006, 15h10

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