2017-03-22 4 views
0

Also habe ich ein Python-Skript, das ein Argument eines Ortes nimmt und das Skript entsprechend ausführt.Python-Skript mehrmals mit verschiedenen Argumenten aus einer Textdatei lesen

Ich möchte den Prozess beschleunigen, anstatt auf den Abschluss jedes Laufs zu warten und dann das zweite Argument (Ort) einzugeben.

Gibt es eine Möglichkeit, alle Argumente in einer Textdatei eingeben, wie so:

C:\a\b 
    C:\a\c 
    C:\a\d 

und dann Python diese einzeln zu laufen bekommen?

Vielen Dank.

Antwort

1

können Sie eine Schleife erstellen und die Dateinamen durchlaufen. So wird es so etwas wie diese:

with open("arguments.txt") as fp: 
    for filename in fp: 
     with open(filename.strip()) as file: 
      # do stuff with the file 

EDIT:

with open("arguments.txt") as fp: 
    for filename in fp: 
     filename = filename.strip() 
     # now you can pass the filename to your function 
+0

Ich habe dies versucht, aber ich bekomme den folgenden Fehler, wenn ich es ausführen: IOError: [Errno 22] ungültiger Modus ('r') oder Dateiname: '"\\\\ lGup-002 \\ SFQ \\ Marken \\ Releases \\ ss \\ 16.43 \\ Intenal 7 \\ 15-09-2016 "\ n ' – Jaff

+0

Ja, versuche es jetzt, ich habe es repariert, als du den Traceback tippst, leidest vergessen zu strippen() Und du tust es nicht "Wenn Sie die Dateinamen speichern – abccd

+0

ich hinzugefügt .strip() -Methode, aber ich bekomme den gleichen Fehler. – Jaff

1

Wenn ich Ihre Frage richtig verstehe, möchten Sie Argumente eingeben, die im Verzeichnis aufgeführt sind?

Zu diesem Zweck Sie os mit den folgenden Befehlen

from os import listdir 
from os.path import isfile, join 
mypath = 'C:\a\' 
files = [f for f in listdir(mypath) if isfile(join(mypath, f))] 
files 
>>> ['C:\a\a', 'C:\a\b', 'C:\a\c'] 

Dies wird Ihnen eine Liste von Verzeichnissen verwenden können.

+0

Sorry für die nicht klar zu sein, das Verzeichnis ist das Argument – Jaff

+0

jetzt nur Sie eine Schleife durch die Dateien in Ihrem Python-Skript haben. –

Verwandte Themen