2016-04-18 9 views
1

Ich schrieb ein sehr einfaches Programm, um Anführungszeichen aus einer Textdatei zu entfernen. Ich habe ungefähr 50 Dateien, die ich ausführen muss und würde das Programm für alle Textdateien in einem Verzeichnis eher ausführen ...Der Versuch, Python-Programm auf alle Dateien im Verzeichnis ausführen MÜSSEN JEDEN DATEINAMEN SCANNEN UND VERWENDEN

Das große Problem, das ich habe, ist, dass ich die Dateien einzeln lesen muss und sobald die " entfernt sind, wird der gesamte Inhalt der Datei in eine neue Datei ausgegeben, die den Namen der Eingabedatei verwendet.

Zum Beispiel:

Wie ich es jetzt haben, nimmt das Programm die Eingabedateinamen als Argument, und erstellt die Ausgabedateinamen als infile name + _output.txt. Wie mache ich es so, dass es alle Textdateien in einem Verzeichnis verarbeitet, aber die Dateien so benennt, wie ich es möchte?

Mein Programm:

import sys 

if len(sys.argv) <2: 
    print "Usage: python %s requires input file" % (sys.argv[0]) 
    sys.exit() 

infile = sys.argv[1] 
outfile = infile.split(".")[0] + "_output.txt" 

INFH = open(infile) 
OFH = open(outfile, "w") 

print "Output File = %s" % (outfile) 

for line in INFH: 
    line=line.strip('\n').replace('\"','') 

    print >> OFH, line 
INFH.close() 
+1

Seltsame Einrückung ... – linusg

+0

Ich versuche, mit dem Code-Block-System des Stack-Überlaufs zusammenzuarbeiten, um Fragen zu stellen – cobaltchaos

+0

Verwenden Sie 'os.listdir (Pfad)' und 'os.path.isfile (Pfad)' dafür. – linusg

Antwort

2

Sie können es wie folgt tun:

import sys, os 

if len(sys.argv) < 2 and not os.path.isdir(sys.argv[1]): 
    print("Usage: python {} directory".format(sys.argv[0])) 
    sys.exit() 

for entry in os.listdir(sys.argv[1]): 
    if os.path.isfile(entry): 
     infile = entry 
     outfile = infile.split(".")[0] + "_output.txt" 

     INFH = open(infile) 
     OFH = open(outfile, "a") 

     print("Output File = {}".format(outfile)) 

     for line in INFH: 
      line = line.strip('\n').replace('\"','') 
      OFH.write(line) 

     INFH.close() 

einfach ein Verzeichnis anstelle einer Datei als Argument hinzufügen.

+0

Dies gibt einen IndexError: list index out des Bereichs – cobaltchaos

+0

Wenn es wieder durch Moba X Begriff läuft, läuft es aber tut nichts ... – cobaltchaos

+0

Hmm, verwenden Sie etw. wie 'python yourfile.py./dir /'? – linusg