2017-05-02 2 views
1

Ich habe Probleme, den Benutzer zur Eingabe aufzufordern, nachdem ich bereits eine Datei von der Befehlszeile gelesen habe. Mein Code sieht ungefähr so ​​aus, aber ich bekomme jedes Mal einen EOFError. Fehle ich etwas? Mein Code:So kombinieren Sie die Dateieingabe über die Befehlszeile und die Benutzereingabe

import sys 
file = sys.stdin.read().splitlines() 
print (file) 
name = input("Input your name: ") 
print (name) 

Hier ist, was ich in die Befehlszeile für diese Zeilen setzen:

python3 tester.py < example_file.txt 
['my file'] 
Input your name: Traceback (most recent call last): 
File "tester.py", line 4, in <module> 
name = input("Input your name: ") 
EOFError: EOF when reading a line 

In diesem Fall glaube ich raus aus dem sys.stdin.read() Teilungslinien.() Zeile vorausgesetzt, dass es die Informationen in der Datei korrekt ausgibt. Sobald die Zeile, die input() enthält, ausgeführt wird, werde ich nicht zur Eingabe aufgefordert, und es wird ein Fehler angezeigt, ohne dass die Eingabe wie üblich unterbrochen wird.

+0

Bitte zeigen repräsentativen Code und Eingang. – dawg

+0

Ich habe es ein wenig aktualisiert. Gibt dir das eine bessere Vorstellung davon, was vor sich geht? – SQ101

+0

Mögliches Duplikat von [Wie wird sys.stdin.readlines() eingegeben?] (Http://stackoverflow.com/questions/5549141/how-to-finish-sys-stdin-readlines-input) –

Antwort

1

Sie können die fileinput module verwenden, um mehrere Streams ein wenig einfacher zu behandeln.

import fileinput 

t_list=[line for line in fileinput.input()] 
print(t_list) 

name=input('name? ') 
print(name) 

dann mit dem Dateinamen laufen, nicht der Zeichenfolge Inhalt der Datei:

$ python3 test.py file 
['my file\n'] 
name? bob 
bob 
+0

Ausgezeichnet! Genau was ich gesucht habe und danke für die wiederholte Hilfe! – SQ101

+0

Wenn das hilfreich für Sie ist, bitte [akzeptieren Sie die Antwort] (http://stackoverflow.com/help/someone-answers) – dawg

Verwandte Themen