2017-11-19 4 views
2

Wie lese ich eine ganze Datei in Python 3.6.x mit dem Benutzer input() Funktion? Wie die Algorithmen, die die Sites herausfordern. Zum Beispiel:Wie lese ich eine Datei als Standardbenutzereingabe?

  • Ich habe eine Datei mit folgendem Inhalt:

    line 1 
    line 2 
    line 3 
    end 
    
  • Mein Programm wäre so etwas wie tun:

    x = input() 
    while x != 'end': 
        print("I am at", x) 
        x = input() 
    
  • Dann würde ich als Ausgang hat:

    I am at line 1 
    I am at line 2 
    I am at line 3 
    

Ich denke, ich muss mein Python-Beispiel-Programm mit einem anderen Programm (möglicherweise auch Python oder OS-Skript) umbrechen, die den ersten Aufruf der Datei als Benutzereingabe aufrufen. Aber wie könnte ich es tun?

Antwort

2

Normalerweise werden solche Herausforderungen die Eingabe über stdin leiten und die Antwort über stdout erwartet.

Um dies zu tun, führen Sie Ihren Befehl von einer Befehlszeile wie folgt aus;

python program.py < input.txt 

Wenn Sie die Ausgabe des Skripts in eine Datei speichern möchten, können Sie sie in eine Datei umleiten.

python program.py <input.txt> output.txt 
+0

Danke, @Shadow! Ich wünschte, ich könnte Sie und @wim Antworten als richtig setzen. Aber ich kann es nicht und er war schneller. HAHAHA ... Mein Bestes! –

+1

Technisch war ich 3 Minuten schneller (Maus über die 'vor 1 Stunde geantwortet', um den Zeitstempel zu sehen: P Aber es macht mir nichts aus. – Shadow

+1

Ops! Du hast Recht. Um die Dinge fair zu halten, habe ich deine Antwort so festgelegt Sorry für das Durcheinander, Jungs. –

2

Die üblichen Standard lib Werkzeug für diesen Job ist das fileinput Modul:

import fileinput 

for line in fileinput.input(): 
    print(f'working with line {line}') 

aus der Schale Dann nehmen Sie Ihre Wahl aus den folgenden (sie alle Arbeiten):

$ python3 my_script.py my_file.txt 
$ python3 my_script.py < my_file.txt 
$ cat my_file.txt | python3 my_script.py