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

  FORUM HardWare.fr
  Programmation
  Python

  (PYTHON) Un débutant et ses IF

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

(PYTHON) Un débutant et ses IF

n°2019113
pythol
Posté le 26-08-2010 à 12:41:55  profilanswer
 

Bonjour,  
 
je début en Python (5 jours) et je suis bloqué par un petit if qui compare une variable booléen.  
Ce petit code me permet de modifier 3 fichiers csv, il retire les quottes puis le restitue avec le nouveau format.  
 
le seul problème que j'ai est le IF, je veux qu'il ne rentre pas dans in1, in2 ou in3 si le fichier n'est pas présent.  
 
Je veux que dés le début il vérifie la présence du fichier puis face la modif que du fichier présent.  
 
Au passage, je ne sais pas quoi mettre au ELSE final, comment quitter le programme proprement ?  
 
Si je lance le programme il me parle d'indentation error mais je ne vois pas ou.
J'ai cette erreur:  
File "C:\prog.py", line 8  
Src = open("c:\\in1.csv","r" )  
^  
IndentationError: expected an indented block
 
 
On ma conseillé de mettre mais cela ne fonctionne pas mieux.
try:      
f=open(in1.csv, 'r')  
except IOError:      
    print "fichier introuvable"
 
 
 
MERCI  
 
\\------------------------------------------
 
import os  
import os,shutil  
import os.path  
in1 = os.path.isfile("c:\\in1.csv" )
in2 = os.path.isfile("c:\\in2.csv" )  
in3 = os.path.isfile("c:\\in3.csv" )  
 
if in1 == True:  
 
Src = open("c:\\in1.csv","r" )  
Dest = open("c:\\out1.csv","w" )  
data=Src.read()  
output=data.replace('"','')  
Dest.write(output)  
Src.close()  
Dest.close()  
shutil.copyfile("C:\\out1.csv","C:\\in1.csv" )  
os.remove('c:\\out1.csv')  
 
elif in2 == True:  
 
Src = open("c:\\in2.csv","r" )  
Dest = open("c:\\out2.csv","w" )  
data=Src.read()  
output=data.replace('"','')  
Dest.write(output)  
Src.close()  
Dest.close()  
shutil.copyfile("C:\\out2.csv","C:\\in2.csv" )  
os.remove('c:\\out2.csv')  
 
elif in3 == True:  
 
Src = open("c:\\in3.csv","r" )  
Dest = open("c:\\out3.csv","w" )  
data=Src.read()  
output=data.replace('"','')  
Dest.write(output)  
Src.close()  
Dest.close()  
shutil.copyfile("C:\\out3.csv","C:\\in3.csv" )  
os.remove('c:\\out3.csv')  
 
else:

mood
Publicité
Posté le 26-08-2010 à 12:41:55  profilanswer
 

n°2019125
pythol
Posté le 26-08-2010 à 13:33:06  profilanswer
 

J'ai trouvé apres une bonne matinée de recherche.
 
import os
import os,shutil
import os.path
 
try:  
    Src = open("c:\\in1.csv","r" )
    Dest = open("c:\\out1.csv","w" )
    data=Src.read()  
    output=data.replace('"','')
    Dest.write(output)
    Src.close()
    Dest.close()
    shutil.copyfile("C:\\out1.csv","C:\\in1.csv" )
    os.remove('c:\\out1.csv')
except IOError:      
    print ('fichier introuvable')
 
try:  
    Src = open("c:\\in2.csv","r" )
    Dest = open("c:\\out2.csv","w" )
    data=Src.read()  
    output=data.replace('"','')
    Dest.write(output)
    Src.close()
    Dest.close()
    shutil.copyfile("C:\\out2.csv","C:\\in2.csv" )
    os.remove('c:\\out2.csv')
except IOError:
    print ('fichier introuvable')

n°2019171
masklinn
í dag viðrar vel til loftárása
Posté le 26-08-2010 à 15:17:46  profilanswer
 

Critiques:
 

  • Si tu fais la même chose 3 fois de suite, il serait ptet pas con de déclarer une fonction
  • je ne sais pas quel langage tu utilisais auparavant, mais en en Python les variables ne sont pas en PascalCase
  • Si tu es en Python 2.6, 2.7 ou 3.x, utilises with pour ouvrir tes fichiers afin qu'ils se ferment tout seuls, erreurs ou non
  • Si ton fichier est gros, tu le charges entièrement en mémoire 2 fois de suite, ça peut être moyen
  • Je ne sais pas ce que tu fais exactement comme bricolage, mais tu devrais regarder si les fonctions du modules csv ne peuvent pas faire ça pour toi. Écrire un truc genre:
Code :
  1. csv.writer(open('out.csv', 'wb'), quoting=csv.QUOTE_NONE).writelines(
  2.    csv.reader(open('in.csv', 'rb')))


pourrant quand même être plus sympa.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2019613
Sve@r
Posté le 28-08-2010 à 17:52:39  profilanswer
 

pythol a écrit :

Si je lance le programme il me parle d'indentation error mais je ne vois pas ou.
J'ai cette erreur:  
File "C:\prog.py", line 8  
Src = open("c:\\in1.csv","r" )  
^  
IndentationError: expected an indented block
 

Code :
  1. if in1 == True:
  2.  
  3. Src = open("c:\\in1.csv","r" )



 
Tu mets un "if" sans lui associer d'instruction à exécuter si le test est vrai.
 

pythol a écrit :

Au passage, je ne sais pas quoi mettre au ELSE final, comment quitter le programme proprement ?


Ben si le else est en final, il est inutile. Si tu mets rien, le programme se terminera tout seul.
Sinon l'instruction sys.exit() permet de quitter un programme (faut inclure le module sys)


Message édité par Sve@r le 28-08-2010 à 18:19:35

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

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

  (PYTHON) Un débutant et ses IF

 

Sujets relatifs
Question de débutant en Ajaxpassage de paramètre d'une fonction fortran appelée depuis python
Relais TCP-IP PYTHONrechercher éditeur python sous linux
PYTHON PHP BDD : Gros problème d'encodageProblème d'affichage d'image avec imagepng (débutant)
programme débutant sur les chaînes.Supra débutant SVP (QT - PYTHON)
tutoriel pour débutant drools 
Plus de sujets relatifs à : (PYTHON) Un débutant et ses IF


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