2016-04-14 5 views
1

Mit der Datei diese crop data.txt enthält:Warum schreibt dies nicht korrekt in die Datei?

Lettuce 1 2 3 
Tomato 4 5 6 

Wenn ich den Code und Eingang laufen Tomato und 9 statt 6 und Einfügen 9 nach Tomato wie sollte zu entfernen es, es mit 9 den gesamten Inhalt der Datei ersetzt, so dass es so ist:

Ich bin nicht sicher, warum es das tut und wie man es repariert.

crop = input('Which crop? ') 
quantity = input('How much? ') 

file = ('cropdata.txt') 

if crop in open(file).read(): 
with open(file, 'r') as file_read: 
     lines = [] 
     for line in file_read: 
      if crop in line: 
       line = str(line.rstrip("\n")) 
       line_parts = line.split(" ") 
       print (len(line_parts)) 
       if len (line_parts) > 4: 
        print('len greater') 
        line_parts.remove (line_parts[3]) 
        line_parts.insert (1, quantity) 
        line = str(line_parts[0]+ line_parts[1] + 
        line_parts[2]+ line_parts[3] + ' ' + '/n') 
       else: 
        print('len less than') 
        line = str(quantity + " " + "\n") 
     lines.append(line) 

with open(file, 'w') as file_rewrite: 
    file_rewrite.writelines(lines) 
else: 
    print('crop not found') 

Antwort

0

Mindestens Ihre Vertiefung falsch an zwei Stellen, versuchen Sie dies alle Linien zu erhalten:

crop = input('Which crop? ') 
quantity = input('How much? ') 

file = ('cropdata.txt') 

if crop in open(file).read(): 
with open(file, 'r') as file_read: 
     lines = [] 
     for line in file_read: 
      if crop in line: 
       line = str(line.rstrip("\n")) 
       line_parts = line.split(" ") 
       print (len(line_parts)) 
       if len (line_parts) > 4: 
        print('len greater') 
        line_parts.remove (line_parts[3]) 
        line_parts.insert (1, quantity) 
        line = str(line_parts[0]+ line_parts[1] + line_parts[2]+ line_parts[3] + ' ' + '/n') 
       else: 
        print('len less than') 
        line = str(quantity + " " + "\n") 
      lines.append(line) 

with open(file, 'w') as file_rewrite: 
    file_rewrite.writelines(lines) 
else: 
    print('crop not found') 
Verwandte Themen