Skript zum auslesen eines Webordners

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.
M.Koller

Skript zum auslesen eines Webordners

Beitragvon M.Koller » Mittwoch 4. Mai 2005, 07:57

Guten Tag

Ich möchte ein Tool machen das sich via FTP in ein Webverzeichnis einloggt, die Dateien und Ordner die das Web beinhaltet als "tree" anzeigt, also die Baum Struktur anzeigt.

Nachher soll man auf so eine angezeigte Datei klicken können und es wird der Header jenere Datei herausgeschrieben...

Ist das mit Python gut möglich? ich bin nicht so Fit mit Python und bin drum froh um jeden Tip, wie ich das realisieren könnte...

besten Dank

Michel Koller
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 4. Mai 2005, 08:27

Das ist generell sehr gut in Python möglich...

Ich würde allerdings vielleicht erstmal keinen Tree-Baum anzeigen, sondern vielleicht erstmal nur immer eine Ebene... Das ist wesendlich einfacher ;)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
m.koller

Python tree

Beitragvon m.koller » Mittwoch 4. Mai 2005, 09:02

Ja, aber ich setelle mir vor das man dann Ebene für ebene "aufklappen" kann, es soll auch eine Sicht geben wo alle Ebenen aufgeklappt sind.

Dann soll man einfach auf eine dieser dargestellten Dateien klicken können, sie verändern und wieder schliessen.

Muss ich da die Ganze Homepage in ein Objekt laden, und dann damit eine Baumstruktur darstellen? oder gibt es eine Möglichkeit "direkt auf dem Server" zu arbeiten (so wie es zB Frontpage kann).
Also die Dateien sozusagen auspoppen, verändern und wieder zurückschreiben.

Drum die Frage :

Wie kann ich eine Baumstruktur bekommen von einer Homepage die auf einem Server steht ?

Mit welchen Modulen muss ich da arbeiten? bin schon Dankbar für Stichworte woran ich mich dabei halten soll...

vielen Dank für Eure Hilfe
Gruess
Michel Koller
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 4. Mai 2005, 09:09

So ein Projekt hatte ich auch mal vor, ich hatte auch schon ein paar Sachen fertig, da ich bei meiner Homepage auch nur Statische HTML-Dateien benutzt habe...
Mittlerweile nutze ich aber das Mini CMS lucid und erweitere es mit eigenen CGIs.

Ich hab bei http://www.vex.net/parnassus/ aber comfyedit gefunden: http://www.colorstudy.com/software/comfyedit/ vielleicht ist das genau das was zu möchtest...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
M.Koller

Tools

Beitragvon M.Koller » Mittwoch 4. Mai 2005, 10:19

Danke für die Tips mit den Tool's ist sicher eine praktischer Sache.

Hab es schnell heruntergeladen und getestet.

Aber ich möchte ein neues Tool Entwickeln ohne schnickschnack, das nur das kann was ich brauche. Nächmlich in möglichst kurzer eine Homepage als Baumstruktur darstellen, und dann sollte man mit wenigen klicks den Header ändern können.

An welches Python Modul soll ich mich da halten ? um auf den richhtigen Weg zu kommen?

Danke für Tips

Gruess
Michel Koller
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 4. Mai 2005, 10:33

Du gehst mit os.walk() oder os.path.walk() (für ältere Python Version) und liest das Dateisystem aus. (Hilfe dazu im Forum)
Aus den gewonnen Daten bastelst du eine HTML-Seite, die deine Tree-Darstellung mit dem "EDIT"-Link zeigt.

Zum editieren öffnest du die Datei mit file() und schreibst eine HTML-Seite mit einem Formular der Daten der geöffneten Seite, die man dann im Browser editieren kannst. Sowas habe ich bei PyAdmin gemacht (Das ist das Modul 'Editor')

Das Problem wird sein, das CGIs auf dem Webserver als nobody ausgeführt werden. Die Dateien auf dem Server sind aber wahrscheinlich normal mit einem FTP-Client hochgeschickt und haben somit die User/Group des FTP-Accounts.
Kurz um, du kannst du Dateien auf normaler Dateiebene nicht ändern, weil nobody dazu nicht dir Rechte hat.

Dazu gibt es zwei Möglichkeiten: Entweder zu verpasst allen Dateien die Rechte, damit *jeder* die Daten lesen/schreiben kann, aber das ist nicht wirklich schön, weil es halt *jeder* kann...
Eine andere Möglichkeit, die ich schon mal ausprobiert habe und die klappt... Du änderst du Daten mit dem CGI-Skript auf dem Webserver über FTP! Das geht, wenn ftplib zu verfügung steht ;) Dabei ist aber das dumme, das du die Account Daten des FTP-Zugangs in deinem Skript brauchst...
Jetzt ist nur die Frage, wie das Problem bei ComfyEdit gelöst wurde :?:

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
M.Koller

FTP ist gut

Beitragvon M.Koller » Mittwoch 4. Mai 2005, 11:02

Danke für die Antwort

Ja ich stelle mir auch vor das es via ftp gehen könnte, die Zugangsdaten sind kein Problem die habe ich von jeder Page die ich bearbeite.

Mit dem FTP-Host, Benutzernamen und Passwort sollte es doch möglich sein, die Dateien direkt auf dem Server zu editieren.

Vielleicht wird dann einfach jede änderung die ich mache einen ftp-conect aufgebaut und automatisch reingeschrieben, das wäre die Lösung...

Bin ich da auf dem richtigen Weg

Michel koller
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Re: FTP ist gut

Beitragvon jens » Mittwoch 4. Mai 2005, 11:04

M.Koller hat geschrieben:Vielleicht wird dann einfach jede änderung die ich mache einen ftp-conect aufgebaut und automatisch reingeschrieben, das wäre die Lösung...

Genau so hatte ich es mal gemacht ;)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
M.Koller

Darstellen des Verzeichnis

Beitragvon M.Koller » Mittwoch 4. Mai 2005, 13:25

Wie kann man den das ge-connectete Verzeichnis als "tree" darstellen ? also als Baumstruktur ?

Thanks
Michel
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 4. Mai 2005, 13:59

Also ich würde die FTP-Geschichte nur für das schreiben der Dateien verwenden... Alles andere kann man normal aus dem CGI herraus... Wie geschrieben mit os.walk() oder os.path.walk() die Verzeichnisdaten lesen und daraus eine HTML-Seite generieren...

Den Baum würde ich aus verschachtelte HTML-Listen bauen... Das müßte man in einer rekursiven Schleife erledigen können... Dafür gibt es aber nicht's fertiges in Python selber... Vielleicht gibt es aber irgendwo ein fertiges Modul...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 4. Mai 2005, 16:33

Zuletzt geändert von jens am Mittwoch 4. Mai 2005, 19:10, insgesamt 2-mal geändert.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 4. Mai 2005, 16:36


CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Donnerstag 5. Mai 2005, 10:32

Als Einstieg hier noch was:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os


class pathwalk:

    def __init__( self, path ):
        self.walk( path )

    def walk( self, path ):
        dirlen = len( path.split(os.sep) ) -1
        spacer = " " * (dirlen * 3)

        for diritem in os.listdir( path ):

            joined_path = os.path.join( path, diritem )
            if os.path.isdir( joined_path ):
                # Ist ein Verzeichnis
                print spacer,diritem
                self.walk( joined_path )


pathwalk( ".." )

Einfach mal Ausführen lassen ;)

EDIT: Hier ist eine fertige Klasse: http://www.python-forum.de/viewtopic.php?t=3215

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder