2017-11-29 4 views
-2

Ich muss eine Datei nach einem Benutzernamen suchen (der Benutzername wird in einer Variablen namens x gespeichert), und wenn x mit einer Zeile in der Datei übereinstimmt, hängen Sie die Zeile genau 2 Zeilen darunter an in eine andere Variable (die y genannt wird). Wie würde ich das tun?Eine Zeile in einer Datei an eine Variable anhängen

Ich bin ziemlich neu und habe keinen Zugriff auf meinen ursprünglichen Code. Ich habe daran erinnert, was ich kann über den Code und Inhalt der Datei, und da ich bin unerfahren, es ist ziemlich simpel:

Beispiel Inhalt der Datei:

Steven Abbot 
qwerty 
london 

Beispiel Code:

x = input(“Enter name:”) 
password = (“Enter password:”) 
city = (“Enter city name”) 
crd = open(“credentials.txt”, “a”) 
crd.write(x) 
crd.write(\n) 
crd.write(password) 
crd.write(\n) 
crd.write(city) 
crd.write(\n) 
crd.close() 

Beachten Sie, dass dieses Programm mehrmals verwendet werden soll, damit ich nicht einfach die dritte Zeile an y anhängen kann. Der Name der Stadt ist die Information, die ich extrahieren und an eine Variable namens y anhängen muss. Ich stecke fest, da der Name der Stadt zwischen den Benutzern variieren kann, und ich weiß nicht, wie und 2 Zeilen unter dem Namen auszuwählen.

Mit dem Beispielinhalt der Datei würde y "london" enthalten, da es zwei Zeilen unter x ist.

+0

Hallo! Können Sie Ihre Quelldatei und die von Ihnen geschriebene Python-Datei einfügen, damit wir sehen, wo Sie steckenbleiben? –

+0

Ich habe den Code bearbeitet und eingefügt, obwohl es nichts besonderes ist und könnte sicherlich Verbesserungen verwenden. Momentan interessiere ich mich nur für die Aufgabe, die ich beschrieben habe – ExampleProfile

+0

Könnten Sie zeigen, was Sie als Ausgabe möchten und was Sie gerade bekommen? – UnsignedByte

Antwort

1

Versuchen Sie folgendes:

def get_password(name, filename): 
    textfile = file(filename) 
    found = False 
    skip = 0 
    for line in textfile : 
     if found == False    
      if line == name: 
       found = True 
     else 
      skip = skip + 1 
      if skip == 2 
       return line 

    return None # if name not found or password not found return None 

und dann rufen:

get_password(x, “credentials.txt”) 
Verwandte Themen