(PYTHON) Un débutant et ses IF

Un débutant et ses IF (PYTHON) - Python - Programmation

Marsh Posté le 26-08-2010 à 12:41:55    

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:

Reply

Marsh Posté le 26-08-2010 à 12:41:55   

Reply

Marsh Posté le 26-08-2010 à 13:33:06    

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')

Reply

Marsh Posté le 26-08-2010 à 15:17:46    

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
Reply

Marsh Posté le 28-08-2010 à 17:52:39    

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.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed