Datei einlesen und in andere Datei schreiben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DaVerve
User
Beiträge: 8
Registriert: Freitag 7. April 2006, 16:05

Hallo, ich hätte eine frage ich will aus einer vorgegebenen datei die zeilen einlesen und dann sortiert in eine andere schreiben.

Code: Alles auswählen

file = open('text.txt', 'r')
while 1:

    line = file.readlines(10)
    
    if not line:
        break    

    #print line
    
file.close()

line.sort()

file = open('ausgabe.txt', 'w')
while 1:
    file.writelines(line)

    if not line:
        break
        
        #print line
file.close()
Er nimmt bei mir hier jetzt die Datei holt die sachen aus der text.txt und erstellt und sortiert auch die liste nur schreibt sie nicht in die ausgabe.txt.
Ich weiß da nicht weiter, kann mir da jemand helfen.

Danke
DaVerve
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

DaVerve hat geschrieben:Hallo, ich hätte eine frage ich will aus einer vorgegebenen datei die zeilen einlesen und dann sortiert in eine andere schreiben.
Hi DaVerve!

bis Python 2.3.x:

Code: Alles auswählen

src = file("quelle.txt", "rU")
dest = file("ziel.txt", "w")
lines = src.readlines()
lines.sort()
dest.writelines(lines)
dest.close()
src.close()
ab Python 2.4.x:

Code: Alles auswählen

src = file("quelle.txt", "rU")
dest = file("ziel.txt", "w")
dest.writelines(sorted(src.readlines()))
dest.close()
src.close()
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
DaVerve
User
Beiträge: 8
Registriert: Freitag 7. April 2006, 16:05

vielen dank
DaVerve
User
Beiträge: 8
Registriert: Freitag 7. April 2006, 16:05

ich hätte da jetzt noch eine frage, ich möchte das das einlesen in einer funktion geschieht und dann in der main funktion das eingelesene auf der konsole ausgegeben wird. Wie bekomme ich das hin.Ich hab noch wenig ahnung von Funktionen also nicht zu verwührt sein über meinen code.
Das habe ich bis jetzt aber da tut sich nicht viel:

Code: Alles auswählen

def einlesen(lines):
    src = file("text.txt", "rU")
    lines = src.readlines()
    src.close()
    return lines

def main():
    print einlesen

Ich hab nicht so wirklich anhnung was ich bei den funktionen in die klammern schreiben muß, ich hoffe mir kann jemand helfen.

danke
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

wenn du das so veränderst müsste es klappen:

Code: Alles auswählen

def einlesen():
    src = file("text.txt", "rU")
    lines = src.readlines()
    src.close()
    return lines

def main():
    print einlesen()
so werden dir die zeilen in einer liste zurückgegeben... du kannst auch

Code: Alles auswählen

print "\n".join(einlesen())
schreiben, dann wird dir direkt der inhalt der datei in der shell ausgegeben, wie er in der datei auch ist...
mfg jAN
#adios.py
import os,sys
while 1: os.startfile(sys.argv[0])
DaVerve
User
Beiträge: 8
Registriert: Freitag 7. April 2006, 16:05

danke schonmal, ich hab das jetzt geändert jedoch gibt er die zeilen nicht aus. Er zeigt zwar keinen fehler aber er gibt auch nicht die datei aus.
Vielleicht weiß da einer bescheid was zu tun ist?

P.S.: Ich möchte dann auch noch das eine funktion zum sortiernen eingefügt wird. Wobei in der Main dann die sortierte datei in eine andere datei gespeichert werden soll. Mein Code bis jetzt:

Code: Alles auswählen

def einlesen():
    src = file("text.txt", "rU")
    lines = src.readlines()
    src.close()
    return lines

def sort():
    lines = src.readlines()
    lines.sort()
    dest.close()

def main():
    print "\n".join(einlesen())
    dest = file("text_sort.txt", "w")
    dest.writelines(lines)
Jedoch funktioniert das so nicht, ich hoffe da kann jemand helfen.
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

gut das kann auch nciht funktionieren, da du in deiner main -funktion nicht die variable lines hast... somit kannst du auch nicht dest.writelines(lines) schreiben
ich schreib dir das ncohmal um:

Code: Alles auswählen

def einlesen():
    src = file("text.txt", "rU")
    lines = src.readlines()
    src.close()
    return lines

def sortieren(lines):
    lines.sort()
    return lines
def main():
    lines=einlesen()
    print "\n".join(lines)
    dest = file("text_sort.txt", "w")
    dest.writelines(sortieren(lines))
#adios.py
import os,sys
while 1: os.startfile(sys.argv[0])
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

DaVerve hat geschrieben:Jedoch funktioniert das so nicht, ich hoffe da kann jemand helfen.
Klaro! Hier:

Code: Alles auswählen

#!/usr/bin/env python
# -*- encoding: latin-1 -*-  

def einlesen():
    src = file("dv1.py", "rU")
    lines = src.readlines()
    src.close()
    return lines

def sort():
    lines = src.readlines()
    lines.sort()
    dest.close()

def main():
    lines = einlesen()
    print "".join(lines)
    
    dest = file("text_sort.txt", "w")
    dest.writelines(lines)
    
if __name__ == '__main__':
    main()
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

@leonidas:
Könnt das sein, das mit def sort() die sort funktion für listen überschrieben wird?
#adios.py
import os,sys
while 1: os.startfile(sys.argv[0])
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Nein, da das nur der Name einer Funktion ist. Die eigentliche sort() Funktion bleibt bestehen.
mfg

Thomas :-)
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

gut... ist aber trotzdem unübersichtlich
#adios.py
import os,sys
while 1: os.startfile(sys.argv[0])
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

jAN hat geschrieben:gut... ist aber trotzdem unübersichtlich
Was findest du denn an dem Code unübersichtlich? :?
mfg

Thomas :-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

jAN hat geschrieben:Könnt das sein, das mit def sort() die sort funktion für listen überschrieben wird?
Nein, da es ein sort() builtin nicht gibt. sort() gibt es nur als Listenmehtode, die wird dadurch aber nicht überschrieben. Das einzige Ähnliche ist das builtin sorted(), welches aber auch nicht überschrieben wird.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
DaVerve
User
Beiträge: 8
Registriert: Freitag 7. April 2006, 16:05

@leonidas
Bei deinem Code funktioniert das mit dem sortieren aber nicht, wie muß man das noch ändern das es sich sortieren läßt und ausgibt. Und dann hätte ich da noch ne frage wie kann ich vor jede zeile die dann in die datei ausgegeben wird noch eine zahl schreiben. Also es soll die sortierte Liste ausgegeben werden mit nummerierung. Weiß da jemand was??
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

diesen code fügst du zu den funktionen:

Code: Alles auswählen

def nummerieren(lines):
    for i in range(0,len(lines)):
        lines[i]=str(i+1)+lines[i]
    return lines
und bevor du die zeilen in die datei schreibst fügst du dann noch die zeile:

Code: Alles auswählen

lines=nummerieren(lines)
ein.
#adios.py
import os,sys
while 1: os.startfile(sys.argv[0])
DaVerve
User
Beiträge: 8
Registriert: Freitag 7. April 2006, 16:05

vielen dank an alle
Antworten