default bilderbrowser des systems öffnen

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.
Antworten
MaticPeel
User
Beiträge: 13
Registriert: Donnerstag 1. Februar 2007, 12:45

Hallo,
bekommt man das über Python hin, dass man den
Default Bilderbrowser starten kann und einen
Startordner übergeben kann?

Hintergrund ist, dass ich einen Flash-Projektor habe
und von dem aus soll nun der Default-Bilderbrowser
aufgerufen werden. Das funktioniert aber so nicht.
Deshalb bräuchte ich eine Anwendung (EXE), die
das erledigt und diese EXE kann ich dann im
Flash-Projektor aufrufen.

Danke.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

MaticPeel hat geschrieben:Default Bilderbrowser starten kann und einen
Startordner übergeben kann?
Seit wann gibt es sowas? Wo kann man denn den Default Bilderbrowser einstellen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
MaticPeel
User
Beiträge: 13
Registriert: Donnerstag 1. Februar 2007, 12:45

Na wenn man mit DoppelKlick ein Bild auswählt öffnet sich doch ein Programm, wie "Bild und Faxanzeige", Xnview, ACDSee oder was auch immer. (Wenn man dies eingstellt hat)

Gibt es da nun die Möglichkeit das Programm X (Bild und Faxanzeige, Xnview, ACDSee,....) zu starten und ihm das Bild Y (bla.jpg) zu übergeben?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

MaticPeel hat geschrieben:Na wenn man mit DoppelKlick ein Bild auswählt öffnet sich doch ein Programm, wie "Bild und Faxanzeige", Xnview, ACDSee oder was auch immer. (Wenn man dies eingstellt hat)
Es gibt keinen Default-Bilderbrowser. Es gibt nur ein Programm welches mit einem bestimmten Dateityp verknüpft ist. So kann IrfanView JPEGs öffnen, XNVIew PNGs und ACDSee TIFFs. Welches ist nun der Default-Bilderbrowser?
MaticPeel hat geschrieben:Gibt es da nun die Möglichkeit das Programm X (Bild und Faxanzeige, Xnview, ACDSee,....) zu starten und ihm das Bild Y (bla.jpg) zu übergeben?
Eventuell ``os.startfile()``, das startet das mit dem Dateiformat verknüpfte Programm. Funktioniert aber nur unter Windows, unter anderen Systemen macht das auch keinen Sinn.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
MaticPeel
User
Beiträge: 13
Registriert: Donnerstag 1. Februar 2007, 12:45

Leonidas hat geschrieben:Es gibt keinen Default-Bilderbrowser. Es gibt nur ein Programm welches mit einem bestimmten Dateityp verknüpft ist. So kann IrfanView JPEGs öffnen, XNVIew PNGs und ACDSee TIFFs. Welches ist nun der Default-Bilderbrowser?
Mit Default-Bilderbrowser ist ja auch nicht gemeint, dass es DER default-Bilderbrowser auf allen Systemen ist. Sondern: Wenn ich einmal eingestellt habe, dass bei mir Bilder mit XnView geöffnet werden sollen, dass ist das bei mir der Default-Bilderbrowser.

Und Default-Bildbrowser ist für mich das Programm, dass sich öffnet wenn ich per doppelklick auf eine Bilddatei klicke ohne vorher noch ein Programm auszuwählen.

Ich weiß selbst, dass das alles etwas schräg ist, aber das wird gewünscht und nun versuche ich eine Lösung dafür zu finden.... :roll:
MaticPeel hat geschrieben: Eventuell ``os.startfile()``, das startet das mit dem Dateiformat verknüpfte Programm. Funktioniert aber nur unter Windows, unter anderen Systemen macht das auch keinen Sinn.
Soll ja auch nur Plattformbezogen sein, deshalb auch "Anwendung (EXE)" :wink:

Danke für den Tipp

Code: Alles auswählen

import tkFileDialog
import os

f = tkFileDialog.askopenfilename()
type(f)
os.startfile(f)
So öffnet er ja schon mal das. Nun muss ich nur noch herausfinden, wie man die erste Datei in einem Verzeichnis auslesen kann. Also Ziel ist es ja dann, dass man nicht eine Datei übergibt, sondern das es ein fest definiertes Verzeichnis gibt und dort wird das erste Bild aufgerufen.
cime
User
Beiträge: 152
Registriert: Dienstag 24. Mai 2005, 15:49

So öffnet er ja schon mal das. Nun muss ich nur noch herausfinden, wie man die erste Datei in einem Verzeichnis auslesen kann. Also Ziel ist es ja dann, dass man nicht eine Datei übergibt, sondern das es ein fest definiertes Verzeichnis gibt und dort wird das erste Bild aufgerufen.
schau dir mal dinge wie os.listdir und os.isfile an, damit muesstest du das hinbekommen (ich uebernehme keine garantie dafuer, dass es die elegeganteste moegliche loesung ist)
Soll ja auch nur Plattformbezogen sein, deshalb auch "Anwendung (EXE)"
da wirst du grosse probleme bekommen, wenn du mit python arbeitest, da hier eigentlich nur .py-Dateien erstellt werden, die dann erst beim aufruf von python.exe interpretiert werden (--> keine .exe )



ansonsten kannst du (falls du nichts eleganteres findest) mit os.system zeichenketten uebergeben, die du normalerweise in die konsole schreiben wuerdest ... unter windowskannst du die parameter dann meistens mit einem freizeichen dazwischen angeben


damit muesste dein problem zu loesen sein, glaube ich

viel spass
MaticPeel
User
Beiträge: 13
Registriert: Donnerstag 1. Februar 2007, 12:45

Habs nun

Code: Alles auswählen

import os

ordner = "test"
datei =  os.listdir(ordner)

abs = os.path.abspath(ordner)+"\\"+datei[0]
os.startfile(abs)
Und daraus mit py2exe die EXE und die kann ich in Flash aufrufen und
er macht das was er soll.

Vielen Dank für die schnelle Hilfe. :!:
cime
User
Beiträge: 152
Registriert: Dienstag 24. Mai 2005, 15:49

MaticPeel hat geschrieben:Habs nun

Code: Alles auswählen

import os

ordner = "test"
datei =  os.listdir(ordner)

abs = os.path.abspath(ordner)+"\"+datei[0]
os.startfile(abs)
Und daraus mit py2exe die EXE und die kann ich in Flash aufrufen und
er macht das was er soll.

Vielen Dank für die schnelle Hilfe. :!:
empfehlung: schau dir doch mal os.path.join an ....

und uebrigens mit pz2exe wird das Teil riesig ...


uebrigens solltest du mit flash schon andere Programme oeffnen koennen (habe nur kury gegooglet und was mit fscommand und exec gefunden, kenne mich aber mit flash kaum aus, ist nur als hinweis gedacht)
Zuletzt geändert von cime am Mittwoch 14. Februar 2007, 14:40, insgesamt 1-mal geändert.
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Hi MaticPeel.

Verwende lieber ``os.path.join``.
join( path1[, path2[, ...]])
Join one or more path components intelligently. If any component is an absolute path, all previous components (on Windows, including the previous drive letter, if there was one) are thrown away, and joining continues. The return value is the concatenation of path1, and optionally path2, etc., with exactly one directory separator (os.sep) inserted between components, unless path2 is empty. Note that on Windows, since there is a current directory for each drive, os.path.join("c:", "foo") represents a path relative to the current directory on drive C: (c:foo), not c:\\foo.
Das verwendet den ``os.sep`` was unter *unixen ein / und unter Windows ein \ ist. Damit kriegst du einen sauberen Pfad hin unter beiden Betriebssystemen. Mit deinem Code würde das Ergebnis unter Linux z.B. so aussehen: /dein-pfad\deine-datei anstatt /dein-pfad/deine-datei

Code: Alles auswählen

[...]
path = os.path.join(os.path.abspath(ordner), datei[0])
[...]
Und noch was keine builtins überschreiben. ``abs`` ist ein builtin.

Code: Alles auswählen

print 'abs' in dir(__builtins__) # = True
lg
MaticPeel
User
Beiträge: 13
Registriert: Donnerstag 1. Februar 2007, 12:45

cime hat geschrieben:uund uebrigens mit pz2exe wird das Teil rieig ...
Hab ich auch bemerkt, aber ist in dem Fall nicht so schlimm.
Gibt es da auch noch andere Möglichkeiten eine EXE zu erhalten?
cime hat geschrieben:uebrigens solltest du mit flash schon andere Programme oeffnen koennen (habe nur kury gegooglet und was mit fscommand und exec gefunden, kenne mich aber mit flash kaum aus, ist nur als hinweis gedacht)
Ja. Aber du kannst nur EXE-Dateien öffnen, die in einem Ordner fscommand liegen und dieser muss im gleichen Ordner liegen wie der Projektor. Also liegt nun das kleine Python-Programm in dem fscommand-Ordner und erledigt die Arbeit. Während dies von Flash aufgerufen wird.
sape hat geschrieben:Verwende lieber ``os.path.join``.
Ok. Danke.

Wusste nicht das abs schon vergeben ist. Hatte das nur auf die schnell Probiert und in Eclipse wurde abs nicht als Schlüsselwort angezeigt, so dass ich das gar nicht bemerkt hatte.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

MaticPeel hat geschrieben:
cime hat geschrieben:uund uebrigens mit pz2exe wird das Teil rieig ...
Hab ich auch bemerkt, aber ist in dem Fall nicht so schlimm.
Gibt es da auch noch andere Möglichkeiten eine EXE zu erhalten?
PyInstaller und cx_Freeze, aber großartig kleiner wirds nicht werden. Einen native-Code-Compiler gibt es für Python nämlich nicht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Cime, was du noch nachträglich probieren kannst ist, das Ganze mit upx zu verkleinern. Aber erwarte kein Wunder. Besonders wenn du wxPython Programme mit py2exe in ein exe erzeugst und die mit upx verkleinerst, sind die Ergebnisse nicht besonders berauschend.
cime
User
Beiträge: 152
Registriert: Dienstag 24. Mai 2005, 15:49

sape hat geschrieben:Cime, was du noch nachträglich probieren kannst ist, das Ganze mit upx zu verkleinern. Aber erwarte kein Wunder. Besonders wenn du wxPython Programme mit py2exe in ein exe erzeugst und die mit upx verkleinerst, sind die Ergebnisse nicht besonders berauschend.
oho kenn ich noch nicht, thx , die frage ist halt wieviel es bringt ...



PS: wegen der Rechtschreibung in meinem letzten Post: mein comp @home ist im moment nicht gerade übermäßig funktionstüchtig und akzeptiert nur englische tastatur
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hab gerade was nettes gefunden: http://aspn.activestate.com/ASPN/Cookbo ... ipe/511443

Mit dem implementieren "open" kann man dabei eine beliebige Datei mit dem default Programm öffnen lassen und das ganze ist Platform unabhängig:
'start' for win32, 'open' for OSX and gnome-open, kfmclient and exo-open respectively for the GNOME, KDE and XFCE desktop environment. As a fallback solution xdg-open (if available) and webbrowser.open are used.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten