BodomBeachTerror
Anmeldungsdatum: 24. März 2008
Beiträge: 788
|
Hey Ubuntuusers! Ich wollte mal wissen wie man mit dem Befehl 'print' abgewöhnt immer automatisch eine neue Zeile zu zeichnen, des weiteren wollte ich wissen wie man bei einer Datei herausbekommt ob man schon am Ende ist. Gibt es da so eine Funktion wie eof() oder so was? Es kommen bestimmt noch mehr Fragen. Danke schon mal 😉
|
Marc_BlackJack_Rintsch
Ehemalige
Anmeldungsdatum: 16. Juni 2006
Beiträge: 4686
Wohnort: Berlin
|
Ein , am Ende verhindert den Zeilenumbruch. Es wird aber ein Leerzeichen ausgegeben. Wenn Du das nicht magst, musst Du sys.stdout zur Ausgabe verwenden, da hast Du volle Kontrolle über die Ausgabe. Eine eof() -Funktion gibt's so nicht. In welchem Zusammenhang brauchst Du die denn? Normalerweise erkennt man das Ende einer Datei daran, dass eine Leseoperation eine leere Zeichenkette liefert, also als Wahrheitswert betrachtet "falsch" ist. Ansonsten würde ich aber immer versuchen eine for -Schleife zu verwenden, zum Beispiel direkt über das Dateiobjekt, was die Zeilen liefert. Wenn man gleichgrosse Blöcke lesen will kann man sich einen Iterator über die Blöcke mit dem Dateiobjekt, functools.partial() , und der iter() -Funktion bauen.
|
BodomBeachTerror
(Themenstarter)
Anmeldungsdatum: 24. März 2008
Beiträge: 788
|
OK danke erstmal Wie genau mache ich das denn mit der for Schleife? Ich habe da ein Beispiel gesehen bei dem jemand das Objekt mit der Zahl verglichen hat glaub ich. Geht das so?
|
Marc_BlackJack_Rintsch
Ehemalige
Anmeldungsdatum: 16. Juni 2006
Beiträge: 4686
Wohnort: Berlin
|
Was genau willst Du denn mit der for -Schleife machen? Über Zeilen iterieren? Oder über gleichgrosse Blöcke? | for line in my_file:
print line
block_size = 1024
for block in iter(functools.partial(my_file.read, block_size), ''):
print block
|
|
BodomBeachTerror
(Themenstarter)
Anmeldungsdatum: 24. März 2008
Beiträge: 788
|
Ja über Zeilen und diese dann in ein Array speichern.
|
Fredo
Anmeldungsdatum: 27. Juni 2005
Beiträge: 5244
Wohnort: Bochum
|
BodomBeachTerror schrieb: Ja über Zeilen und diese dann in ein Array speichern.
my_file.readlines()? Genau genommen gibt es in Python übrigens keine Datenstruktur namens "Array" 😉 Liebe Grüße Fredo
|
Ferio
Anmeldungsdatum: 24. April 2007
Beiträge: 383
|
Fredo schrieb: Genau genommen gibt es in Python übrigens keine Datenstruktur namens "Array" 😉
Doch es gibt eine(array.array), aber ich glaube nicht, dass der OP das will.
|
BodomBeachTerror
(Themenstarter)
Anmeldungsdatum: 24. März 2008
Beiträge: 788
|
@Fredo Ja genau mit readline() jetzt brauche ich das ganze nur noch in einer for Schleife bis die Datei zu Ende ist, ich weiß eben bloß nicht wie ich überprüfen soll ob sie zu Ende ist.
|
Marc_BlackJack_Rintsch
Ehemalige
Anmeldungsdatum: 16. Juni 2006
Beiträge: 4686
Wohnort: Berlin
|
@BodomBeachTerror: Erstens habe ich Dir schon gesagt wie man das Ende erkennt, zweitens brauchst Du das doch überhaupt nicht weil die readlines() -Methode, die Fredo schon genannt hat – bitte den Namen genau lesen, denn readline != readlines – liefert eine Liste mit den Zeilen. Alternativ könntest Du auch einfach list() auf das Dateiobjekt anwenden. Und in vielen Fällen kann man sich das komplette Einlesen auf einen Schlag auch sparen und Dateien Zeilenweise verarbeiten.
|
BodomBeachTerror
(Themenstarter)
Anmeldungsdatum: 24. März 2008
Beiträge: 788
|
Oh sorry stimmt 😳 Dann danke an euch, aber kann mir jemand vielleicht so eine for Schleife mal als Beispiel machen das wäre nett, danke 😀
|
phst
Anmeldungsdatum: 24. Juni 2007
Beiträge: 527
|
BodomBeachTerror schrieb: Oh sorry stimmt 😳 Dann danke an euch, aber kann mir jemand vielleicht so eine for Schleife mal als Beispiel machen das wäre nett, danke 😀
Das Beispiel wurde schon längst gepostet. Lies doch bitte vor dem Schreiben erst einmal die Antworten!
|
Fredo
Anmeldungsdatum: 27. Juni 2005
Beiträge: 5244
Wohnort: Bochum
|
Ferio schrieb: Fredo schrieb: Genau genommen gibt es in Python übrigens keine Datenstruktur namens "Array" 😉
Doch es gibt eine(array.array), aber ich glaube nicht, dass der OP das will.
Ach, cool, da lernt man ja immer wieder was dazu! ☺ Ich denke, sowas kann ich bestimmt noch mal brauchen. Oft hat eine Liste ja wirklich nur Objekte des gleichen Typs, da könnte man ja auch gleich einen Array nehmen. Liebe Grüße Fredo
|
BodomBeachTerror
(Themenstarter)
Anmeldungsdatum: 24. März 2008
Beiträge: 788
|
Tatsache, tut mir Leid 😀 Danke an euch hat mir sehr geholfen 😉
|
Marc_BlackJack_Rintsch
Ehemalige
Anmeldungsdatum: 16. Juni 2006
Beiträge: 4686
Wohnort: Berlin
|
@Fredo: So nützlich ist array.array nicht, weil es nicht beliebige Objekte speichert und langsamer im Zugriff ist als eine Liste, weil die enthaltenen Typen immer zwischen Python-Objekten und der internen Darstellung hin und her konvertiert werden müssen.
|
Fredo
Anmeldungsdatum: 27. Juni 2005
Beiträge: 5244
Wohnort: Bochum
|
Marc 'BlackJack' Rintsch schrieb: @Fredo: So nützlich ist array.array nicht, weil es nicht beliebige Objekte speichert und langsamer im Zugriff ist als eine Liste, weil die enthaltenen Typen immer zwischen Python-Objekten und der internen Darstellung hin und her konvertiert werden müssen.
Ah, ok. Ich hätte vermutet, dass es effizienter und schneller ist, wenn nur ein Datentyp verwendet wird. Na, dann vergesse ich es ganz schnell wieder... 😉 Liebe Grüße Fredo
|