2017-08-05 5 views
-1

Ich habe gerade das ProgrammPython-Fehlermeldung Dateiname ist nicht definiert?

j = input("choose a file to read") 
l = open(j,"r") 
e =l.read() 
print e 

es lief, und in README.txt eingegeben, die eine echte Textdatei im selben Ordner wie das Programm befindet, aber jedes Mal, wenn ich README.txt geben, i erhalten eine Fehlermeldung,

error FileName: README not defined. 

I python 3.6 haben. Weiß jemand, was ich falsch mache?

+0

Sie führen diesen Code nicht tatsächlich unter 'Python 3.6' aus. Der Fehler, den du bekommst, ist ein deutlicher Hinweis darauf, dass dein 'input' versucht, die Eingabe zu bewerten, genau wie Pythons" input "funktioniert. Stellen Sie sicher, dass Sie sich in der richtigen Python-Umgebung befinden. – idjaw

+0

Ihre Aussage 'print e' ohne Klammern zeigt, dass dies kein Python 3.6-Code ist, sondern Python 2.x, und das erklärt Ihr Problem mit der' input'-Funktion. Ändere das in 'raw_input()' und sieh nach, ob das dein Problem löst. Wenn ich der Zeile 'print' Klammern hinzufüge, funktioniert Ihr Code in Python 3.6.2 gut. –

+0

Aber die wirkliche Lösung hier ist, dass, wenn Sie vorhaben, Python 3.6 zu verwenden, dann müssen Sie zunächst sicherstellen, dass Ihr Code tatsächlich Python 3-konform ist, und Sie tatsächlich * für * Python 3 und nicht 2 ausführen. – idjaw

Antwort

0

Python 3.x hat ein bisschen anders mit Python 2.x

allererst Sie print (e) statt print e verwenden musst (wenn Sie Python 3.x), dann muss Datei schließen (wenn Sie don ‚t das es nicht Fehler ausgelöst, aber es ist wichtig), damit Ihr Code sein muss:

j=input("choose your file ") 


try: 
l=open(j,'r') 

e=l.read() 

print (e) 

l.close() 

except: 
print (" no such file ") 

Sie können auch Funktion nutzen diese besser zu machen:

def readme(j): 
l=open(j,'r') 

e=l.read() 

l.close() 

print (e) # in python 3.x use print() instead of print 

readme("README.txt")