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.
Denn ich möchte an der Stelle prüfen, ob ich schon meine 300 Zeilen voll habe und ein neues File erzeuge oder weiterschreiben kann...
Danke und LG Tina
@Tinker232: Du könntest die `flush()`-Methode verwenden um eventuell gepufferte Daten auch tatsächlich raus zu schreiben. Und Vorsicht: bei CSV muss die Anzahl der Zeilen nicht der Anzahl der Datensätze entsprechen, weil Zeilenenden auch innerhalb von einzelnen Werten vorkommen dürfen. Wenn man sicher sein will, muss man also Datensätze zählen und nicht (Text)Zeilen.
Wobei mir das recht teuer erscheint jedes mal die gesamte Datei zu verarbeiten um zu testen ob man schon eine bestimmte Anzahl an Datensätzen in der Datei hat. Da würde ich eher am Anfang die Anzahl ermitteln und dann beim schreiben von neuen Datensätzen im Programm mitzählen.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Es geht um ein loggerfunktion. Meine Daten werden in eine Queue geschrieben. Sobald diese voll ist wird die Liste entleert und in das file geschrieben, danach soll überprüft werden ob die Dateigröße oder Anzahl der Zellen (je nachdem was einfacherer & effizienter zu lösen ist) einen Wert von X überschritten hat. Wenn dem so ist wird das aktuelle file geschlossen und für die nächsten Daten aus der Queue eine neue .csv erzeugt.
sum(1 for _ in csv.reader(csv_file)) - hat funktioniert. Allerdings bekomme ich hier 66 angezeigt, obwohl es gerade einmal 11 Zeilen sind! mhhhh
Du müsstest natürlich prüfen, ob die Standardeinstellungen zu deinen Daten passen, also z.B. im Hinblick auf den Spaltentrenner ("," oder ";" oder Leerzeichen, usw). Ansonsten liest er das falsch ein und die Angaben passen dann nicht.
Aber wenn es dir eigentlich nur um die Dateigröße geht, dann genügt ein os.path.getsize(filename).
Na, das wurde ja oben schon erklärt: Daten werden aus Performancegründen nicht unbedingt sofort auf den Datenträger (bzw ins Dateisystem) geschrieben. Das wird einem dann sozusagen erstmal nur "vorgegaukelt". Ein Schließen der Datei führt zum tatsächlichen Schreiben aller Daten. Dies kann man aber auch ohne das Schließen erzwingen, wenn man meine_datei.flush() aufruft. Probier das doch mal aus.