Ordnerinhalt

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Sync32
User
Beiträge: 141
Registriert: Mittwoch 27. Januar 2010, 12:42

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?
Benutzeravatar
Käptn Haddock
User
Beiträge: 169
Registriert: Freitag 24. März 2006, 14:27

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
---------------------------------
have a lot of fun!
...
User
Beiträge: 116
Registriert: Mittwoch 23. Dezember 2009, 20:22

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,
...
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Für unixoide Systeme existiert immer noch [mod]curses[/mod], welches auch mit Maus-Events umgehen kann...

getmouse() dürfte die Anforderung erfüllen.
Sync32
User
Beiträge: 141
Registriert: Mittwoch 27. Januar 2010, 12:42

Danke für die schnellen Antworten.
Habe mir nun ein kleines eigenes "Verlinkungs"-Modul gebastelt. (def xxx(): , nennt man doch bei euch Modul oder? :D )

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.
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Achso, hier ist ja Webprogrammierung.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sync32 hat geschrieben:Habe mir nun ein kleines eigenes "Verlinkungs"-Modul gebastelt. (def xxx(): , nennt man doch bei euch Modul oder? :D )
Nein, sowas nennt man bei uns, wie überall anders auch, Funktion.

Dem Code nach zu urteilen nutzt du Django, richtig?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Aufrufbares Objekt!!! :twisted: ;)
Sync32
User
Beiträge: 141
Registriert: Mittwoch 27. Januar 2010, 12:42

Leonidas hat geschrieben:
Sync32 hat geschrieben:Habe mir nun ein kleines eigenes "Verlinkungs"-Modul gebastelt. (def xxx(): , nennt man doch bei euch Modul oder? :D )
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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Sync32
User
Beiträge: 141
Registriert: Mittwoch 27. Januar 2010, 12:42

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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')
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Sync32
User
Beiträge: 141
Registriert: Mittwoch 27. Januar 2010, 12:42

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'
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
Sync32
User
Beiträge: 141
Registriert: Mittwoch 27. Januar 2010, 12:42

/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.
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Sync32
User
Beiträge: 141
Registriert: Mittwoch 27. Januar 2010, 12:42

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten