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
Skript zum auslesen eines Webordners
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
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
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
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...
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...
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
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
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
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
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
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
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
Wie kann man den das ge-connectete Verzeichnis als "tree" darstellen ? also als Baumstruktur ?
Thanks
Michel
Thanks
Michel
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
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...
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...
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Diese Threads können dir helfen:
http://www.python-forum.de/viewtopic.php?t=2685
http://www.python-forum.de/viewtopic.php?t=2433
http://www.python-forum.de/viewtopic.php?t=2416
http://www.python-forum.de/viewtopic.php?t=2685
http://www.python-forum.de/viewtopic.php?t=2433
http://www.python-forum.de/viewtopic.php?t=2416
Zuletzt geändert von jens am Mittwoch 4. Mai 2005, 19:10, insgesamt 2-mal geändert.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Achja und natürlich: PythonDeForum / Faq / Wo finde ich Beispiele ?
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Als Einstieg hier noch was:
Einfach mal Ausführen lassen
EDIT: Hier ist eine fertige Klasse: http://www.python-forum.de/viewtopic.php?t=3215
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( ".." )
EDIT: Hier ist eine fertige Klasse: http://www.python-forum.de/viewtopic.php?t=3215