[Python-de] Daten in Datei einfuegen

Alexander 'boesi' Bösecke boesi.josi at gmx.net
Die Apr 27 22:08:09 CEST 2004


Hi

Sorry, dass ich erst jetzt antworte, aber ich war in den letzten Tagen
etwas zu tief in meinem Projekt eingetaucht.

Am 22.04.2004 14:32:57 schrieb Georg Mischler:

> Auch unter unix wird dir "ls" eine 1MB grosse Datei anzeigen. Mit
> "du" siehst du aber, dass sie physikalisch nur einen einzigen
> Block belegt (512-4096k, je nach Grösse des Dateisystems).
> Sobald du um unteren Bereich etwas reinschreibst, wird das
> Dateisystem die dazu notwendigen Blöcke ebenfalls allozieren.

Aber genau das tu ich ja mit dem file.write('.'). Das braeuchte ich dann
also unter Unix gar nicht und ls wuerde trotzdem eine Groesse von 1MB
anzeigen? Windows alloziert die Bloecke auch erst, wenn man etwas
in die Datei schreibt, aber davor ist die Datei 0 Byte gross (also auch
nach dem file.close()).
Sorry das ich so bloed frag, aber ich kann das hier nicht selber testen. 

> Es is theoretisch möglich, dass moderne Windows Dateisysteme
> (NTFS) so etwas auch unterstützen, aber ich habe keine Ahnung,
> wie man dort den Unterschied feststellen könnte.

So wie ich das sehe, haengt unter Windows die Dateigroesse immer von der
Zahl der allozierten Bloecke ab.

> > Also die Daten gehoeren schon zu einer Datei.
> 
> Warum?

Dazu muss ich etwas weiter ausholen.
Ich schreibe im Rahmen meiner Studienarbeit ein P2P-System. Ich hab eine
zentrale Struktur aehnlich wie Napster gewaehlt - es gibt einen Server,
Peers und Clients.
Die Peers teilen dem Server mit welche Teile (genau diese 1MB grossen
Bloecke) von welchen Dateien sie gespeichert haben. Der Client fragt
beim Server nach einer bestimmten Datei und teilt diesem mit, welche
Bloecke er bereits hat. Der Server entscheidet dann nach verschiedenen
Kriterien, welche Bloecke der Client als naechstes von den Peers laedt.
Der Client bekommt also auf die Anfrage eine Liste von Bloecken und dazu
passend eine Liste von Peers, welche die Bloecke jeweils gespeichert
haben. Wenn der Client diese Bloecke komplett hat, schreibt er sie auf
Platte und bietet sie wiederum selbst als Peer an.

Deswegen gehoeren die Bloecke zu einer Datei und deswegen ist die
Reihenfolge, in welcher die Bloecke eintreffen, nicht festgelegt.
Und aus diesem Grund will ich auch nicht wirklich x Dateien fuer eine
Datei haben.
Und einen Index fuer die Dateien brauch ich sowieso, weil ich noch ein
paar zusaetzliche Infos benoetige, die in einem shelve gespeichert
werden.

> Das musst du ausprobieren, aber für eine letzten Endes lineare
> Sequenz von Datenblöcken scheint mir das Overkill zu sein.

Jup, da hast du wohl recht

cu boesi
-- 
baka baka                                            #1671 : icq-intern
                                                 #73628288 : icq-extern
                                                  boesi111 : aim
                                                      i171 : reallife