Dateien in Plone auslesen

  • Hallo,

    ich habe ein Skript in Plone geschrieben welches Instanzen von ContentTypes erstellt und dann die Felder mit Werten belegt. Jetzt möchte ich noch einen String aus einer Datei die im gleichen Verzeichnis ist, auslesen. Mit

    Code
    string = file(Dateiname, Flag)

    geht's aber leider nicht, da er mir beim Test des Skripts immer wieder den Fehler bringt, dass file nicht gefunden wurde.

    Kann mir vielleicht jemand Tipps geben wie ich das Problem lösen kann?

    Danke.

    Grüße

  • Kurze Frage zum Verständnis.

    Du möchtest eine Datei die im Filesystem liegt auslesen und in die Plone Instanz die Daten schreiben, oder du hast in der Plone Instanz in einem Ordner oder so ein Objekt File in welchem du einen String auslesen möchtest.

    Beides ist für Plone absolut unterschiedlich.
    Beim Zugriff auf das Filesystem kann es dir wirklich passieren das du nicht die Rechte hast, wie mgraf beschreibt.

    Bei einem Objekt von Typ File im Plone, kann der Befehl file nicht funktionieren, weil du nicht auf einem Filesystem bist sondern in einer Objektdatenbank. dort muss man sich erstmal das File-Objekt holen, und kann dann auf die internen Attribute zugreifen, wovon eins die Datein dann wiederspiegelt.

    Ich hoffe geholfen zu haben.

    Gruss Pumukel

    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

  • Hi,

    danke für eure Antworten.

    Ja, also ich möchte innerhalb der Plone-Instanz ein File-Objekt erstellen und dann die Methode read() des File-Objekts anwenden um den Inhalt aus einer bestimmten Datei herauszulesen welchen ich dann in einem String speichere und anschließend diesen String in einem Feld einer ContentType-Instanz speichere.

    Ich habe mir das mit den External Methods mal angeschaut. Könnt ihr mir denn sagen wie ich jetzt genau vorgehen muss um ein File-Objekt innerhalb einer Plone-Instanz erstellen zu können? Ich habe im Python25 Ordner nach File.py oder ähnlich geschaut aber leider nichts gefunden. Entschuldigt wenn ich mich etwas anstelle, aber ich kenne mich noch nicht sehr gut mit diesen Sachen aus.


    Grüße

  • Hallo,

    meines erachtens schaust du an der falschen Stelle.

    Python - Abstrakte Klasse eines Primitiven / Nativen Objektes im Dateisystem (Datei in Unix/Linux/Windows -> File)

    Plone - Abstraktes Objekt der ATContentTypes (Archetype) die wiederum PythonObjekte Kapseln.

    Innerhalb Plones arbeitest du nicht auf dem Filesystem, sondern der ZODB, alle Inhalte sind erstmal ein Objekt, eines abstrakten Types.

    Ein Type File wird in Plone normalerweise mit dem ATFile gekappselt.
    Objekte in Plone erzeugt man über eine Archetype/ContentTypes.Factory

    wie man an Teile eines ATContentType Objekts kommt sind in den Schema-Definitionen erklärt: für ATFile: http://dev.plone.org/collective/bro…terface/file.py

    Insgesamt schau dir an:

    http://plone.org/documentation/…rogrammatically

    http://plone.org/documentation/…ogrammatically/

    Gruss Pumukel

    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

  • Ok, Danke für die Antwort.

    Ich habe es nun über einen anderen Weg hinbekommen. Ich habe eine .py geschrieben und im Extension Ordner meines Products abgelegt, anschließend die __init___.py angepasst und in meinem Skript die entsprechende Funktion, die eine Datei ausliest und einen String zurückgibt, importiert.

    Jetzt habe ich aber das Problem dass mir Plone die Fehlermeldung bringt, dass die Datei mit dem angebenen Name nicht gefunden wurde. Weiß denn jemand wo ich Dateien ablegeb muss? Als Pfad habe ich in der Funktion lediglich den Dateinamen angebenen und keine weiteren Pfadangaben. Die Datei habe ich ebenfalls im Extensions Ordner abgelegt.

  • Zitat von plonenewbie

    Ok, Danke für die Antwort.


    Jetzt habe ich aber das Problem dass mir Plone die Fehlermeldung bringt, dass die Datei mit dem angebenen Name nicht gefunden wurde. Weiß denn jemand wo ich Dateien ablegeb muss? Als Pfad habe ich in der Funktion lediglich den Dateinamen angebenen und keine weiteren Pfadangaben. Die Datei habe ich ebenfalls im Extensions Ordner abgelegt.


    Es ist immer hilfreich, wenn man den Originalcode und Originalfehlermeldungen zu sehen bekommt. Wilde Umschreibungen von irgendwelchen Fehlern sind wenig hilfreich *wink mit dem Zaunpfahl*