[Python] 2 questions (fichier ; arrays)
Ssylvainsab
Messages postés
2884
Date d'inscription
Statut
Modérateur
Dernière intervention
-
sebsauvage Messages postés 32893 Date d'inscription Statut Modérateur Dernière intervention -
sebsauvage Messages postés 32893 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour.
Comme l'indique le titre, j'ai deux questions (que je n'ai pas pu résoudre malgré des recherches) à propos de python.
1 : Comment faire pour ajouter du texte à un fichier, au lieu d'effacer le contenu, lorsque j'écris dedans ?
En effet, si je tape :
Le fichier ne contient que ce que je viens d'écrire, et pas tout ce qu'il contenait avant.
2 : Est-ce qu'il existe une fonction pour afficher des arrays de manière plus lisible ? Je cherche une fonction qui saute une ligne entre chaque élément, et qui indente les éléments par exemple, comme la fonction print_r en PHP.
Par exemple :
Merci.
--
Sylvain
Comme l'indique le titre, j'ai deux questions (que je n'ai pas pu résoudre malgré des recherches) à propos de python.
1 : Comment faire pour ajouter du texte à un fichier, au lieu d'effacer le contenu, lorsque j'écris dedans ?
En effet, si je tape :
fichier=open('fichier','w') fichier.write('blablabla') fichier.close
Le fichier ne contient que ce que je viens d'écrire, et pas tout ce qu'il contenait avant.
2 : Est-ce qu'il existe une fonction pour afficher des arrays de manière plus lisible ? Je cherche une fonction qui saute une ligne entre chaque élément, et qui indente les éléments par exemple, comme la fonction print_r en PHP.
Par exemple :
>>>a=[1,2,[3,4,5],6] >>>a [1, 2, [3, 4, 5], 6] >>>print_r(a) [ 0 : 1, 1 : 2, 2 : [ 0 : 3, 1 : 4, 2 : 5 ], 3 : 6 ]
Merci.
--
Sylvain
A voir également:
- [Python] 2 questions (fichier ; arrays)
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
10 réponses
Salut,
Pour ton 1, met l'attribut "a" au lieu de "w", ça ajoutera en fin de fichier :-)
Pour ton 2, je pense qu'il est rare de trouver des fonctions d'affichage pour débugger aussi bien faites qu'en php (pour une fois que j'admet un avantage de php par rapport à python).
Si tu veux afficher comme print_r il faudra que tu te concoctes toi même une fonction pour faire ça...
Pour ton 1, met l'attribut "a" au lieu de "w", ça ajoutera en fin de fichier :-)
Pour ton 2, je pense qu'il est rare de trouver des fonctions d'affichage pour débugger aussi bien faites qu'en php (pour une fois que j'admet un avantage de php par rapport à python).
Si tu veux afficher comme print_r il faudra que tu te concoctes toi même une fonction pour faire ça...
Merci.
J'ai essayé de reproduire un équivalent de la fonction print_r, mais elle n'est pas terrible.
Les crochets d'ouverture et de fermeture ne sont pas toujours affichés au même niveau, et je ne trouve pas pourquoi. En plus, l'index de chaque élément n'est pas affiché.
La voici :
--
Sylvain
J'ai essayé de reproduire un équivalent de la fonction print_r, mais elle n'est pas terrible.
Les crochets d'ouverture et de fermeture ne sont pas toujours affichés au même niveau, et je ne trouve pas pourquoi. En plus, l'index de chaque élément n'est pas affiché.
La voici :
def print_r(expression,niveau_en_cours=0): type_expression=type(expression) resultat='' resultat+=(niveau_en_cours)*' ' #Si la variable est un tableau if type_expression==list: nb_composantes=len(expression) i=0 resultat+='[\n' #on affiche chaque composante avec l'indentation for composante in expression: i=i+1 resultat+=(niveau_en_cours)*' ' resultat+=str(print_r(composante,niveau_en_cours+1)) if i!=nb_composantes: resultat+=',' resultat+='\n' resultat+=(niveau_en_cours+1)*' ' resultat+=']' #Sinon on retourne la variable sous forme de chaine else: resultat+=str(expression) return resultat
--
Sylvain
Je pense qu'il faut que print_r soit une fonction récursive vu qu'une liste peut contenir une autre liste etc...
EDIT: Shame on me! J'ai mal lu ton code...
EDIT: Shame on me! J'ai mal lu ton code...
Ben pour la fermeture des crochets tu mets:
resultat+=(niveau_en_cours+1)*' '
Pas besoin de mettre +1
resultat+=(niveau_en_cours+1)*' '
Pas besoin de mettre +1
def print_r(expression,niveau_en_cours=0): type_expression=type(expression) resultat='' resultat+=(niveau_en_cours)*' ' #Si la variable est un tableau if type_expression==list: nb_composantes=len(expression) i=0 resultat+='[\n' #on affiche chaque composante avec l'indentation for composante in expression: i=i+1 resultat+=niveau_en_cours*' ' resultat+=str(print_r(composante,niveau_en_cours+1)) if i!=nb_composantes: resultat+=',' resultat+='\n' resultat+=niveau_en_cours*' ' resultat+=']' #Sinon on retourne la variable sous forme de chaine else: resultat+=str(expression) return resultat
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Non, ce n'est pas ça. Même en mettant niveau_en_cours+1*' ', les crochets fermants étaient avant les ouvrants.
--
Sylvain
--
Sylvain
mmm...
Ca fonctionne avec les arrays, pprint ?
J'ai trouvé de l'aide sur ce module, mais il est question d'objets, par d'arrays.
http://quentel.pierre.free.fr/python-trad/module-pprint.html
https://docs.python.org/3/library/pprint.html
J'ai essayé :
Mais aucun ne retourne quelquechose du genre :
--
Sylvain
Ca fonctionne avec les arrays, pprint ?
J'ai trouvé de l'aide sur ce module, mais il est question d'objets, par d'arrays.
http://quentel.pierre.free.fr/python-trad/module-pprint.html
https://docs.python.org/3/library/pprint.html
J'ai essayé :
import pprint a=[1,2,3] pp = pprint.PrettyPrinter(indent=4) pp.pprint(a) Ou encore : import pprint a=[1,2,3] a.pprint() a.pprint pprint(a)
Mais aucun ne retourne quelquechose du genre :
[ 1, 2, 3 ]
--
Sylvain