Seite 1 von 2
Ordnerinhalt
Verfasst: Mittwoch 24. Februar 2010, 09:31
von Sync32
Hi.
Lass mir per os.listdir den Ordnerinhalt anzeigen.
Gibt es ne Möglichkeit, dass die einzelnen Files noch jeweils verlinkt sind?
So dass ich sie per klick öffnen kann?
Re: Ordnerinhalt
Verfasst: Mittwoch 24. Februar 2010, 09:53
von Käptn Haddock
Frage an Radio Eriwan:
Sync32 hat geschrieben:Hi.
Lass mir per os.listdir den Ordnerinhalt anzeigen.
Gibt es ne Möglichkeit, dass die einzelnen Files noch jeweils verlinkt sind?
So dass ich sie per klick öffnen kann?
Antwort: Im Prinzip ja.
Im Ernst: Womit in welchem Kontex willst du welche Dateitypen per Klick öffnen? Prinzipiell ist das eine Sache, die das GUI handelt. Den Pfad zur Datei hast du, was du damit machst, ist letztlich deine Sache.
Gruß UWe
Verfasst: Mittwoch 24. Februar 2010, 10:03
von ...
Bei Tkinter kannst du z.B. ein Event verwenden, das wenn du auf den Eintrag in der Liste klickst, der Pfad in einer Variablen aktualisiert wird.
Dann prüfst du ob es sich um eine Datei handelt (isFile(pfad) oder so)
oder um ein Ordner (isDir(pfad))
Entsprechend handelst du dann - im ersten Fall öffnest du die Datei (z.B. os.system(command)), im 2. Fall aktualisierst du die Liste...
Das du in der Console draufklicken kannst, ohne irgendwas GUI-Mäßiges wirst du wohl kaum hinkriegen, da die Console normalerweise nur den Text anzeigt.
Ich weiß nicht ob es Librarys für ConsolenGUIs mit Mausunterstützung gibt.
lg,
...
Verfasst: Mittwoch 24. Februar 2010, 10:14
von snafu
Für unixoide Systeme existiert immer noch [mod]curses[/mod], welches auch mit Maus-Events umgehen kann...
getmouse() dürfte die Anforderung erfüllen.
Verfasst: Mittwoch 24. Februar 2010, 10:19
von Sync32
Danke für die schnellen Antworten.
Habe mir nun ein kleines eigenes "Verlinkungs"-Modul gebastelt. (def xxx(): , nennt man doch bei euch Modul oder?

)
Hab bloß halt noch das Problem eine Variabel als Wert zu übergeben.
Also im Template hab ich den Platzhalter {{ Var2 }}, der irgendein Wert hat.
Diesen möchte ich meinem Modul xxx geben, klappt aber nicht.
Hab mein Modul die Parameter gesagt mit
def xxx (request, var2)
........
return ......
Und in meiner URL.py hab ich auch folgendes definiert:
....
(r'^goto_xxx/'var2, 'Myprojects.testapp.views.xxx'),
....
Und den Link wiefolgt im Template:
"./goto_xxx/{{ var2}}/"
Aber wenn ich anschließend aufm Link klicke, passiert nichts. Er refresht die Seite oder so.
Verfasst: Mittwoch 24. Februar 2010, 10:21
von snafu
Achso, hier ist ja Webprogrammierung.
Verfasst: Mittwoch 24. Februar 2010, 10:54
von Leonidas
Sync32 hat geschrieben:Habe mir nun ein kleines eigenes "Verlinkungs"-Modul gebastelt. (def xxx(): , nennt man doch bei euch Modul oder?

)
Nein, sowas nennt man bei uns, wie überall anders auch, Funktion.
Dem Code nach zu urteilen nutzt du Django, richtig?
Verfasst: Mittwoch 24. Februar 2010, 11:07
von snafu
Aufrufbares Objekt!!!

Verfasst: Mittwoch 24. Februar 2010, 11:12
von Sync32
Leonidas hat geschrieben:Sync32 hat geschrieben:Habe mir nun ein kleines eigenes "Verlinkungs"-Modul gebastelt. (def xxx(): , nennt man doch bei euch Modul oder?

)
Nein, sowas nennt man bei uns, wie überall anders auch, Funktion.
Dem Code nach zu urteilen nutzt du Django, richtig?
Ja. Sorry, vergesse es immer wieder zu erwähnen.
Verfasst: Mittwoch 24. Februar 2010, 11:30
von Leonidas
Na dann musst du in der URL-Konfiguration alles nach ``goto_xxx/`` matchen und das als Parameter an deinen View ``xxx`` weiterleiten - das ist dann der Pfad auf dem das ``os.listdir()`` aufgerufen werden soll.
Verfasst: Mittwoch 24. Februar 2010, 11:33
von Sync32
Leonidas hat geschrieben:Na dann musst du in der URL-Konfiguration alles nach ``goto_xxx/`` matchen und das als Parameter an deinen View ``xxx`` weiterleiten
Hab ich doch ?!
(r'^goto_xxx/'var2, 'Myprojects.testapp.views.xxx'),
Hier sollte er doch eigneltich den Inhalt der Vaibael var2 mit ins def xxx übergeben.
Verfasst: Mittwoch 24. Februar 2010, 11:38
von Leonidas
Sync32 hat geschrieben:Leonidas hat geschrieben:Na dann musst du in der URL-Konfiguration alles nach ``goto_xxx/`` matchen und das als Parameter an deinen View ``xxx`` weiterleiten
Hab ich doch ?!
(r'^goto_xxx/'var2, 'Myprojects.testapp.views.xxx'),
Wo‽
Sollte eher so aussehen:
Code: Alles auswählen
(r'^goto_xxx/(?P<path>.*)', 'Myprojects.testapp.views.xxx')
Verfasst: Mittwoch 24. Februar 2010, 11:52
von Sync32
Danke für die schnelle Antwort.
Mein Link im Template:
"/goto_xxx/{{ var2 }}/
Meine Einstellung in der Url.py
(r'^goto_xxx/(?P<var2 >.*)', 'Myprojects.testapp.views.xxx'),
Meine Funktion:
def xxx(var2):
test123= var2
return HttpResponse(test123)
Error:
xxx() got multiple values for keyword argument 'var2'
Verfasst: Mittwoch 24. Februar 2010, 12:04
von /me
Sync32 hat geschrieben:
(r'^goto_xxx/'var2, 'Myprojects.testapp.views.xxx'),
Sag mal, testest du eigentlich auch mal bevor du hier fragst?
Der obige Code kann niemals fehlerfrei gelaufen sein.
Verfasst: Mittwoch 24. Februar 2010, 12:16
von /me
Sync32 hat geschrieben:Meine Einstellung in der Url.py
(r'^goto_xxx/(?P<var2 >.*)', 'Myprojects.testapp.views.xxx'),
Meine Funktion:
def xxx(var2):
test123= var2
return HttpResponse(test123)
Error:
xxx() got multiple values for keyword argument 'var2'
Benutze bitte Code-Tags wenn du Code angibst.
Ich würde hier außerdem den Fehler: "error: bad character in group name" erwarten. Das kann einfach nicht der Code sein, der bei dir läuft.
Verfasst: Mittwoch 24. Februar 2010, 12:17
von Sync32
/me hat geschrieben:Sync32 hat geschrieben:
(r'^goto_xxx/'var2, 'Myprojects.testapp.views.xxx'),
Sag mal, testest du eigentlich auch mal bevor du hier fragst?
Der obige Code kann niemals fehlerfrei gelaufen sein.
Mein Link im Template:
"/goto_xxx/{{ var2 }}/
Meine Einstellung in der Url.py
(r'^goto_xxx/(?P<var2 >.*)', 'Myprojects.testapp.views.xxx'),
Meine Funktion:
def xxx(var2):
test123= var2
return HttpResponse(test123)
Error:
xxx() got multiple values for keyword argument 'var2'
Natürlich teste ich. Und würde er fehlerfrei laufen, würde ich ja auch nciht nachfragen. Ich verstehe das bloß nicht.
Ich will doch einfach nur einen String der im Template in dem Platzhalter {{ var2 }} ist per Link in die Funktion xxx übergeben.
So das ich den String in {{ var2 }} in der Funktion verwenden kann.
Verfasst: Mittwoch 24. Februar 2010, 12:26
von /me
Sync32 hat geschrieben:Natürlich teste ich. Und würde er fehlerfrei laufen, würde ich ja auch nciht nachfragen.
Das verstehe ich, aber du gibst Fehler an, die gar nicht auftreten können. Wenn du in einem regulären Ausdruck eine named group mit einem Leerzeichen im Namen verwendest dann knallt das sofort. Python unterdrückt da nicht aus Gemeinheit den Fehler um dir dann an anderer Stelle einen Folgefehler um die Ohren zu hauen.
Deine Funktion xxx wird von irgendwo mit xxx("foo", var2="bar") aufgerufen. Das passiert allerdings nicht im von dir angegebenen Code.
Verfasst: Mittwoch 24. Februar 2010, 12:26
von Leonidas
xxx() got multiple values for keyword argument 'var2'
Also mit dem Code den du hier postest kann das eigentlich gar nicht sein, wo käme denn der zweite ``var2``-Parameter her?
Verfasst: Mittwoch 24. Februar 2010, 12:39
von Sync32
Leonidas hat geschrieben:xxx() got multiple values for keyword argument 'var2'
Also mit dem Code den du hier postest kann das eigentlich gar nicht sein, wo käme denn der zweite ``var2``-Parameter her?
Ja das frage ich mich auch. Hab die auch schonmal unbenannt aber kommt der selbe Fehler.
Er hat sie ja einmal als Parameter im Link in der Template..../.../ {{ var2 }}
und einmal als Parameter in der Funktion def xxx(var2):
Ansonsten wird der Platzhalter nur in einer Schleife eingesetzt aber nirgendwo als Parameter.
Deine Funktion xxx wird von irgendwo mit xxx("foo", var2="bar") aufgerufen. Das passiert allerdings nicht im von dir angegebenen Code.
Wird sie nicht. Benutze Templatesystem und übergebe es per Link an die view.py
Verfasst: Mittwoch 24. Februar 2010, 12:43
von Leonidas
Ok, Vorschlag das zu debuggen:
Nenn den Parameter in der URL-Conf ``path`` statt ``var2`` und füge einen zusätzlichen Parameter ``path`` zuästzlich zu ``var2`` hinzu. Dann müsste der Aufruf gehen und du kannst ``var2`` ausgeben um zu gucken was da übergeben wird und rauszufinden woher es kommt.