2016-08-01 11 views
0

Gibt es eine andere Möglichkeit zu überprüfen, ob etwas zuerst ist?Gibt es einen besseren Weg, dies zu tun?

Ich habe for i,f in enumerate(read_files) verwendet, wo ich eine Liste von Dateien auflisten und eine if-Anweisung verwenden, um zu überprüfen, ob i == 0. Ich bin neugierig, gibt es einen anderen (besser, schneller, weniger typisiert) Weg, dies zu tun?

read_files = glob.glob("post_stats_*.tsv") 
with open("result.tsv", "w") as outfile: 
    for i,f in enumerate(read_files): 
     with open(f, "r") as infile: 
      metric_name = (f.strip(".tsv").split("_")[2]) 
      if i == 0: 
       outfile.write(metric_name.upper() + "\n" + infile.read()) 
      else: 
       outfile.write("\n" + metric_name.upper() + "\n" + infile.read()) 
+0

Da Ihr Code bereits arbeitet, ist die beste SE zu veröffentlichen diese auf ist [Code Review] (http: // Codereview. stackexchange.com/). –

+0

@ OrangeFlash81 Cool, wird es tun. – Chris

+2

Benötigen Sie nur das 'if', um zu vermeiden, dass die Ausgabedatei mit einer leeren Zeile gestartet wird? –

Antwort

3

Da es die einzige Verwendung der if scheint, ist eine Leerzeile am Anfang der Ausgabedatei, wie etwa setzt die leere Zeile nach des Inhalt der Datei zu vermeiden? Das wird am Ende der Datei zu einer leeren Zeile führen, dass es unwahrscheinlich ist verletzt:

read_files = glob.glob("post_stats_*.tsv") 
with open("result.tsv", "w") as outfile: 
    for f in read_files: 
     with open(f, "r") as infile: 
      metric_name = (f.strip(".tsv").split("_")[2]) 
      outfile.write(metric_name.upper() + "\n" + infile.read() + "\n") 
+0

Oh .. duh. Vielen Dank! – Chris