2010-10-19 3 views
5

Hallo, ich bin auf der Suche nach meiner eigenen benutzerdefinierten Datei wie Objekt für ein internes binäres Format, das wir bei der Arbeit verwenden (ich will nicht wirklich zu sehr ins Detail gehen, weil ich nicht weiß, ob ich kann). Ich versuche, eine mehr pythische Art zu machen, Dinge zu tun, da wir derzeit zwei Funktionen lesen/schreiben (jeweils ~ 4 k Zeilen Code), die alles tun. Aber wir brauchen mehr Kontrolle/Finesse, daher die Tatsache, dass ich dieses Zeug umschreibe.Erstellen einer benutzerdefinierten Datei wie Objekt Python Vorschläge?

ich an der Python-Dokumentation sah, und sie sagen, welche Methoden i implementieren müssen, aber nicht erwähnen Sachen wie iter()/usw.

Im Grunde, was ich ist wie dieses Zeug zu tun, würde lieben :

output_file_objs = [ 
    open("blah.txt", "w") 
    open("blah142.txt", "wb") 
    my_lib.open("internal_file.something", "wb", ignore_something=True) 
] 

data_to_write = <data> 

for f in output_file_objs: 
    f.write(data_to_write) 

So kann ich es mit den anderen mischen, und grundsätzlich ein Maß an Transparenz haben. Ich werde benutzerdefinierte Methoden hinzufügen, aber das ist kein Problem.

Gibt es eine gute Referenz bezüglich des Schreibens Ihrer eigenen benutzerdefinierten Datei wie Objekte? Wie jede Form von Beschränkungen oder speziellen Methoden (iter). Ich sollte umsetzen?

Oder gibt es ein gutes Beispiel für eine aus der Python-Standard-Bibliothek, die ich betrachten kann?

Antwort

4

Was ein "Datei-Like" ausmacht, hängt davon ab, wofür Sie es verwenden möchten; Nicht alle Methoden müssen implementiert werden (oder eine vernünftige Implementierung haben).

Having said that, die file und iterator docs sind, was Sie wollen.

+1

Danke, ich habe gerade ein grobes Skelett implementiert und scheint großartig zu funktionieren. – UberJumper

0

Warum stopfen Sie Ihre Daten nicht in StringIO? Andernfalls können Sie sich die Dokumentation ansehen und alle dateiähnlichen Methoden implementieren. Um ehrlich zu sein, gibt es in Python keine echten Schnittstellen, und einige Funktionen (wie tell()) sind für Ihre Dateien möglicherweise nicht sinnvoll, sodass Sie sie nicht implementieren können.

+0

Es ist viel komplexer als StringIO, wir müssen Dinge wie die Komprimierung tun, einige andere Dateien aktualisieren, wenn ein erfolgreiches Binärpaket erstellt wurde. – UberJumper

Verwandte Themen