2017-02-04 12 views
0

Mit Python-Version 3Wie kann ich mit Python

Ich verwende den Code ausgewählten Zeilen aus einer Textdatei lesen:

f = open("cinema.txt","r") 
print(f.read()) 

Dies geht dann weiter zu öffnen, das Kino Textdatei. Diese Textdatei enthält 50 Zeilen mit 50 Filmtiteln.

Was ich tun möchte, ist in der Lage, zum Beispiel Zeile 5 zu lesen. Ich möchte auch zum Beispiel Zeilen 15-20 lesen können. Kann jemand bitte beraten, was das Extrabit ist, das ich in den Code hinzufügen muss. Ich habe im Internet gesucht, aber ich kann keine Antwort finden, die funktioniert.

+0

http://stackoverflow.com/questions/4999340/python-random-access-file – donkon

Antwort

2

Sie könnten versuchen, enumerate zu verwenden und dann nach der Zeilennummer zu überprüfen: Beachten Sie, dass i beginnt bei i so i == 4 entspricht der 5. Zeile.

with open('cinema.txt') as f: 
    for i, line in enumerate(f): 
     if i == 4: 
      print(line.strip()) 
     if 14 < i < 19: 
      print(line.strip()) 
+0

Vielen Dank Hansaplast -, die eine Menge Zeit gespart hat, könnten Sie mir sagen, welche Extra muss ich hinzufügen? Ich möchte, dass es nur einen Zeilenabstand hat, wenn es in Datei ausgegeben wird. – Ellen

+0

@ellen: Sie müssen 'strip()' es, um den Zeilenumbruch zu entfernen. Ich habe die Antwort angepasst – hansaplast

1

Sie können eine Zeile in der Liste aufzeichnen und den Listenschnitt anzeigen.

f = open("cinema.txt") 
lines = f.readlines() 
a = 15 
b = 20 
print("\n".join(lines[a:b + 1])) 

oder

for i in range(a, b + 1): 
    print('line №' + str(i) + ': ' + lines[i]) 
+0

Noch einmal danke – Ellen

1

Verwenden with open(), nicht open() verwenden, ist das Best Practices.

data = [] 
with open("cinema.txt","r") as f: 
    data = f.readlines() # readlines() returns a list of items, each item is a line in your file 

print(data[5]) # print line 5 

for i in range(14, 19): 
    print(data[i]) 
+0

Können Sie bitte sagen, warum es die beste Praxis ist, mit zu verwenden? –

+1

Aus diesem Grund: http://StackOverflow.com/a/31334226/7070779 –

Verwandte Themen