2017-07-07 1 views
0

Ich habe den folgenden Code geschrieben. Ich lese eine Datei und entferne das Element aus dem ersten Index, aber es wird nicht entfernt. Kann jemand helfen?Element nicht von der Liste entfernt

import os 
fo = open('temp_file.txt', 'w') 
fo.write(output1) 
fo.close() 
fo = open('temp_file.txt', 'r') 
temp_list = fo.readlines() 
fo.close() 
os.remove('temp_file.txt') 
del temp_list[0] 
print (temp_list) 
+0

Was genau ist nicht zu entfernen? os.remove ('temp_file.txt')? Ich habe deinen Code ausgeführt, musste fo.write (output1) in fo.write ("test") ändern, da es nicht definiert war. Mein Ergebnis war einfach [] und die .txt wurde nach dem Lauf entfernt. Mein Vorschlag wäre, os.remove() einen langen Pfad wie "C: \ Benutzer \ someUser \ Desktop \ program \ temp_file.txt" – J0hn

+0

zu machen. Ich kann Sie nicht reproduzieren Problem mit '" test1 \ ntest2 \ ntest3 \ n "' für 'Ausgabe1'. – yinnonsanders

+0

del temp_list [0] entfernt nicht das erste Element aus der Liste. –

Antwort

0

Vielleicht ist dies die Lösung für Ihr Problem?

import os 
fo = open('temp_file.txt', 'w') 
fo.write("test\n") 
fo.write("test2\n") 
fo.write("test3\n") 
fo.close() 
fo = open('temp_file.txt', 'r') 
temp_list = [] 
for i in fo.readlines(): 
    temp_list.append(i) 
fo.close() 
os.remove('temp_file.txt') 
print(temp_list) 
del temp_list[0] 
print (temp_list) 

Ausgang:

['test\n', 'test2\n', 'test3\n'] 
['test2\n', 'test3\n'] 
+0

ja, dieser Weg würde funktionieren, aber was war falsch in der ursprünglichen Methode, ich erzeugte die Liste auch dort. Und keine Linien wurden reduziert. –

+0

Um ehrlich zu sein @GoldyTomy Ich habe keine Ahnung, lol. Ich denke, dass Sie in der Lage sein könnten, dies auf "del fo.readlines() [0]" zu reduzieren, da fo.readlines() eine eigene Liste erstellt. Als ich temp_list.append (fo.readlines()) gemacht habe, habe ich tatsächlich eine Liste mit der verschachtelten fo.readlines() Liste darin erstellt. Sec, ich werde sehen, ob es funktioniert und Sie aktualisieren. EDIT: ignorieren, 'fo.readlines() [0]' ist nicht gültig. Hmm. Ich bin mir nicht sicher, warum man 'fo.readlines()' nicht einfach mit der '=' Methode in eine Liste übersetzen kann. – J0hn

+0

str = fo.readline(); während str :; temp_list = str; str = fo.readline(); Dies würde nur eine Liste generieren. Aber readlines macht die ganze Arbeit in einer Zeile –

Verwandte Themen