2016-04-07 5 views
0

Mit der Funktion appendA() möchte ich in der Lage sein, nach der Variablen crop zu suchen und dann die Variable quantity an das Ende derselben Zeile wie crop anzuhängen. Da ich Python relativ neu bin, bin ich mir nicht sicher, wie ich das machen soll.Wie füge ich der Zeile einer bestimmten Zeichenfolge in einer TXT-Datei in Python hinzu?

Hier ist mein Code:

crop = input("Which crop? ") 
quantity = input("How many? ") 

def appendA(): 
file.write (quantity + ' ') 

def appendB(): 
file.write ('\n') 
file.write (crop + ' ') 
file.write (quantity + ' ') 

with open ('cropdatabase.txt', 'a+') as file: 
if crop in open('cropdatabase.txt').read(): 
    appendA() 
else: 
    appendB() 

file.close() 
+1

Lesen Sie die Datei in eine Liste von Zeilen. An die betroffene Zeile anhängen. Schreibe die Zeilen. – xbello

+0

in Ihrer 'appendA()', wenn Sie die Datei schreiben, machen Sie eine neue Datei, die 'Menge' enthält. –

+0

Sie sollten eine bestimmte Frage im Zusammenhang mit Ihrem Code stellen, damit die Leute wissen, wo Sie stecken bleiben. Es gibt ein paar Probleme mit Ihrem Code (zum Beispiel fügt "appendA" nur die Menge an, in der Hoffnung gegen alle Hoffnung, dass es am richtigen Ort gemacht wird), aber Sie sollten damit anfangen, wie Sie "Datei" öffnen, aber nicht übergeben Sie es an die 'append' Funktionen, so dass es dort nicht existiert. –

Antwort

0

Zunächst einmal wollen wir die Datei in etwas laden schöneres mit wie eine Liste zu arbeiten:

lines = file.readlines() 

Nun wollen wir unsere Ernte finden und fügen Menge es:

index = lines.index(crop) 
lines[index] += ' ' + str(quantity) 

Endlich die Datei speichern:

open(file_path, 'w').write('\n'.join(lines)) 
+0

'index' findet die Ernte nur, wenn keine Menge vorhanden ist, was nicht der Fall ist. Sie müssten die Zeilen aufteilen und das "crop" an das erste Element anpassen. –

+0

Ja, ich erhalte 'ValueError:' (die Zeichenfolge, die innerhalb des Ausschnitts enthalten ist) 'ist nicht in der Liste'. Wenn Sie sagen: "Teilen Sie die Linien und stimmen Sie mit dem ersten Element überein", was meinen Sie? – superato

+0

Hammer teilt die Datei in Linien. Dann müssen Sie jede Zeile in Menge und Menge aufteilen und das erste Element dieser Teilung mit Ihrer vergleichen Ernte, um zu sehen, ob es schon da ist. –