2016-04-02 4 views
-1

Kann mir jemand helfen, bekomme ich diesen Fehler, wenn ich meine Datei ausführen ValueError: E/A-Vorgang auf geschlossene Datei. Ich versuche nur, eine simle Testdatei ausführen, die ein zwei drei vier fünf sechs sieben acht neun zehnValueError: E/A-Vorgang bei geschlossener Datei.

def main(): 
# Declare variables 
line = '' 
counter = 0 

# Prompt for file name 
fileName = input('Enter the name of the file: ') 

# Open the specified file for reading 
infile = open(fileName, 'r') 

# Priming read 
line = infile.readline() 
counter = 1 

# Read in and display first five lines 
while line != '' and counter <= 5: 
# Strip '\n' 
    line = line.rstrip('\n') 
    print(line) 
    line = infile.readline() 
    # Update counter when line is read 
    counter +=1 

# Close file 
    infile.close() 

# Call the main function. 
main() 
+3

Sie haben 'infile' in der' while' Schleife geschlossen. – vaultah

+1

Vielleicht möchten Sie in die 'mit open() as ...' Syntax zum Lesen von Dateien schauen –

+0

Fügen Sie 'print ('closing file')' kurz vor dem Schließen hinzu ... Sie werden es zweimal sehen. – tdelaney

Antwort

3

In Python Einzug sagt Teil der Syntax ist - es zeigt Codeblöcke.

Ihr Code-Snippet zeigt deutlich, dass infile.close() Betrieb ist innerhalb eine Schleife, so dass es auf der ersten Iteration ausgeführt wird. Das zweite Lesen aus der Datei schlägt daher fehl, da die Datei in der vorherigen Iteration bereits geschlossen wurde.

Einfach Raste Linie infile.close() zu beheben.

Alternativ können Sie mithilfe von Kontextmanagern Python die Bereinigung von Ressourcen ermöglichen.

with open(fileName, 'r') as infile: 
    pass # operate on file here 

# file will be closed automatically when you leave code block above. 
Verwandte Themen