2017-03-25 5 views
0

Ich lerne Python und ich bin ein super Anfänger! Ich habe gerade eine Übung absolviert und wollte Variationen davon erstellen. Meine Frage ist, wenn die IF/ELSE Anweisung wie kann ich mit vermeiden "out_file = open (to_file, 'w') out_file.write (indata)" zweimal. Vielen Dank im Voraus!Lernen Python: Import existiert

from sys import argv 
from os.path import exists 

script, from_file, to_file = argv 

print "Copying from %s to %s" % (from_file, to_file) 

in_file = open(from_file) 
indata = in_file.read() 

print "The input file is %d bytes long" % len(indata) 

if exists(to_file): 
    print "File already exists, override?" 
    raw_input() 
else: 
    out_file = open(to_file,'w') 
    out_file.write(indata) 

out_file = open(to_file,'w') 
out_file.write(indata) 

print"Done." 

out_file.close() 
in_file.close() 
+0

Ich denke, Sie sind auf einen der Hauptgründe gestoßen, warum [Funktionen] (http://anh.cs.luc.edu/python/hands-on/3.1/ handsonHtml/functions.html # function-parameters) existieren :) – jDo

+0

Wie gesagt, ich habe gerade angefangen in die Welt des Codierens einzutauchen. Also bitte, gib mir ein Beispiel, damit ich lernen kann! ;) –

Antwort

1

Aktuell Ihr Skript wirklich nicht die Eingabe des Benutzers prüfen, ob für die zu überschreiben, und Sie überschreiben, unabhängig von ihrer Eingabe. Es sieht aus wie Sie ihre Eingabe betrachten wollen, so würde ich etwas empfehlen wie:

proceed = False 
if exists(to_file): 
    print "File already exists, override?" 
    ans = raw_input("y/n: ") 
    if ans == "y": 
     proceed = True 
else: 
    proceed = True 

if proceed: 
    out_file = open(to_file,'w') 
    out_file.write(indata) 

Auch werden Sie wahrscheinlich Umgang einige Fehler tun, wenn das from_file nicht vorhanden ist, wie in diesem Umstand der Anruf zu open() wird eine IOError erhöhen - siehe https://docs.python.org/2/library/functions.html#open

+0

Ich mag die Verwendung von 'proceed' turn 2 verschachtelte Bedingungen in ein Flag zum Schreiben der Datei. Ich mag auch, dass diese Antwort die Ausgabedatei nur öffnet _if_ der Benutzer wird darauf schreiben. Und die Notwendigkeit, mit mehr Fehlern umzugehen - sehr nett. –

+0

Vielen Dank. Ich möchte Benutzereingaben nur berücksichtigen, wenn die Datei bereits existiert. –