Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1154 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  importation fichier > tableau dans python

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

importation fichier > tableau dans python

n°1760416
tapiwa
Posté le 16-07-2008 à 16:45:30  profilanswer
 

Bonjour,
 
J'ai des tableaux de doubles stockés dans des fichiers textes (séparés par des \t)
 
je voudrais importer cela sous forme de tableaux dans python, ou alors pouvoir me déplacer en 2d dans mon fichier pour faire des tests et extraire a la demande certaines données.
 
Cela est il possible aisément?  
 
Pour ma part je n'ai trouvé que comment extraire des lignes entieres sous formes de liste, ou sinon c'est élément par élément, long et surtout ca me parait complexe vu que mon tableau n'est pas rectangulaire (non non) donc pour se déplacer en 2d aie....
 
J'ai entendu parler d'une librairie csv, qqun sait si ca s'adapte a des fichiers qui sont tabulation-separated?  
 
Merci!

mood
Publicité
Posté le 16-07-2008 à 16:45:30  profilanswer
 

n°1760443
tapiwa
Posté le 16-07-2008 à 17:20:52  profilanswer
 

en bidouillant (j'isole la colonne, puis la ligne et ca me donne l'élément voulu) mais je l'ai sous forme d'un string, avec en plus un séparateur de ligne a la fin. Comment retrouver un double? Il faut se taper de parcourir mon string jusqu'au caractere de fin de ligne, puis de transformer le reste en double? Et meme comment faire ca? J'ai rien trouvé dans le tuto de gerard swinnen.
 
Perl n'est il pas plus adapté pour ce que je veux faire?
 
merci

n°1760444
tapiwa
Posté le 16-07-2008 à 17:21:17  profilanswer
 

(je lance un peu un troll avec ma question sur perl, non?)

n°1760539
masklinn
í dag viðrar vel til loftárása
Posté le 16-07-2008 à 20:29:27  profilanswer
 

Le module csv fait partie de la lib standard python, il aurait été de bon ton d'aller voir dedans; oui ça s'adapte; float; peut-être


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1760690
tapiwa
Posté le 17-07-2008 à 10:12:52  profilanswer
 

J'ai suivi le tutoriel
http://www.commentcamarche.net/faq [...] chiers-csv
 
en recopiant exactement le court programme, ca a l'air de fonctionner (le fichier est bien créé)
 
par contre a la lecture, rien ne s'affiche dans mon terminal.
 
voici mon code:

Code :
  1. import csv
  2. Writer = csv.writer(open('test', 'w'), delimiter='\t')
  3. Writer.writerow(['truc'] * 5 + ['machin'])
  4. Writer.writerow(['truc2'] * 5 + ['machin 2'])
  5. Writer.writerow(['truc3'] * 5 + ['machin 3'])
  6. REader = csv.reader(open('test', 'r'), delimiter='\t')
  7. for row in REader:
  8. print row


 
 
j'ai aussi essayé de printer row[1] mais rien non plus (meme pas de message d'erreur)
une idée?


Message édité par tapiwa le 17-07-2008 à 11:25:25
n°1760743
tapiwa
Posté le 17-07-2008 à 11:28:53  profilanswer
 

visiblement on ne peut pas ecrire puis lire dans un meme fichier. je cherche une instruction de fermeture de l'écriture du fichier....

n°1760909
multani
Dépressionnisé
Posté le 17-07-2008 à 14:57:41  profilanswer
 

Faut que tu flush ou que tu fermes ton fichier après avoir écrit dedans.
 
Et pour manipuler des fichiers, il suffit d'aller voir dans la doc, c'est quand même pas sorcier ...
http://docs.python.org/dev/library [...] le-objects

n°1760935
tapiwa
Posté le 17-07-2008 à 15:18:42  profilanswer
 

Merci de ton aide
je connais file.close()
Seuleument, dans le cas présent ca ne marche pas (peut etre parceque je l'ai ouvert avec le module csv)

 

Tout n'est pas forcément évident pour tout le monde. Bien sur en lisant toute la doc on sait tout faire. Mais alors ce forum ne sert plus a grand chose


Message édité par tapiwa le 17-07-2008 à 15:19:22
n°1760937
multani
Dépressionnisé
Posté le 17-07-2008 à 15:20:18  profilanswer
 

tapiwa a écrit :

Seuleument, dans le cas présent ca ne marche pas (peut etre parceque je l'ai ouvert avec le module csv)


Tu peux être plus précis ?


Message édité par multani le 17-07-2008 à 15:20:26
n°1760939
tapiwa
Posté le 17-07-2008 à 15:23:26  profilanswer
 

pour etre tres precis, et cohérent avec mon code posté ci dessus, je fais REader.close()
et j'obtiens le message d'erreur suivant:
'Attribute Error': _csv.reader object has no attribute close

mood
Publicité
Posté le 17-07-2008 à 15:23:26  profilanswer
 

n°1760946
tapiwa
Posté le 17-07-2008 à 15:33:42  profilanswer
 

ok, j'ai compris
 
Alors il faut d'abord ouvrir le fichier de maniere classique
 
fichier = open('file.csv','rb')
 
puis l'ouvrir avec le module csv
 
fichiercsv = csv.reader(fichier, delimiter=';')
 
et ainsi on peut fermer le fichier 'fichier' avec fichier.close(), ca fonctionne.
 
Par contre je me demande si on ne pourrait pas aussi liberer de la mémoire en supprimant le fichier csv?
 
Merci

n°1760949
multani
Dépressionnisé
Posté le 17-07-2008 à 15:38:51  profilanswer
 

Euh ben ouais [:pingouino]
 
Déjà c'est ton fichier ouvert en lecture que t'essayes de fermer, alors que c'est celui dans lequel t'écris dedans qu'il faudrait fermer.
 
Ensuite, comme le message d'erreur te le dit, un objet csv_reader (ou csv_writer) n'a pas d'attribut/méthode "close".
C'est le fichier que tu passes à csv.writer qu'il faut que tu fermes.
 
Sauf que la, tu le manipules pas directement, vu que tu passes directement le résultat d'"open()" à csv.writer.
Donc, stocke le résultat d'open dans une variable, tu la passes à writer et tu le fermes ensuite.
 
Edit: burned. Comme quoi ...
 

tapiwa a écrit :

Par contre je me demande si on ne pourrait pas aussi liberer de la mémoire en supprimant le fichier csv?


Quelle mémoire ?


Message édité par multani le 17-07-2008 à 15:40:20
n°1761002
tapiwa
Posté le 17-07-2008 à 16:53:12  profilanswer
 

En fait j'ouvre de tres nombreux fichier aussi en lecture, donc il me faut les refermer au fur et a mesure, sinon je vois que mon programme s'alourdit de plus en plus et il avance de moins en moins vite. Donc j'en ai conclu que je saturais une mémoire a force d'ouvrir plein de fichier comme ca (ce sont de tres gros fichiers (genre la taille max d'excel 2003 dans les deux sens) et comme j'en ouvre quelques centaines...
 
Ca doit etre dans la ram que ca se case.

n°1763508
chaica
Posté le 23-07-2008 à 02:11:30  profilanswer
 

tant que tu appelles pas une fonction de type readlines(), ton fichier ouvert c'est juste un descripteur, c'est pas avec ça que tu vas saturer ta ram.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  importation fichier > tableau dans python

 

Sujets relatifs
Ajouter des données à une variable tableau[C] Manipulation de chaines dans un fichier
Indicer les lignes d'un fichier texte avec C++exportation/importation base MySQL
Lecture fichier en binaire et valeur en hexamodification fichier *.set
Extraire lignes d'un fichier .csv avec Visual C++export table SQL vers fichier
Module python[PHP/SQL] Mettre à jour des données dans un tableau array
Plus de sujets relatifs à : importation fichier > tableau dans python


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR