link öffnen im Datei Browser

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
congomonster
User
Beiträge: 5
Registriert: Freitag 6. Mai 2016, 20:11

Hallo!

ich bin Python Anfänger und möchte mich gern an ersten kleinen Skripten versuchen. Ich würde gerne so eine Art
Eventhandler bauen für Links auf Webseiten. Das ganze soll so funktionieren, das wenn man den Link der Auftragsdaten klickt
sich der Datei Browser des Betriebssystem öffnet zu dem Pfad der Auftragsdaten. Eigentlich ist sowas ja vom Internet Browser verboten.

Im ersten Schritt wollte ich erstmal probieren, den jeweiligen Datei Browser des Betriebsystem zu öffnen.

Code: Alles auswählen

import platform
import subprocess

if platform.system() == 'Linux':
    print ('You are on Linux!')
    # open the file browser Linux
    subprocess.Popen(['xdg-open','/home/user'])
elif platform.system() == 'Windows':
    print ('Ohh no you are using Windows...')
    # open the file browser Windows
    subprocess.Popen(['explorer','/home/user'])
elif platform.system() == 'Darwin':
    print ('You must have money, you are on a mac!')
    # open the file browser Mac
    subprocess.Popen(['open','/Users/user'])
Der Teil für Mac OSX funktioniert der Finder wird geöffnet. Unter Linux klappt es leider nicht. Getestet habe ich mit Debian und Gnome3.
Der Dateimanager ist Nautilus. Sollte aber auch mit anderen funktionieren.

Was muss ich machen, damit ich auf Linux auch den Datei Browser öffnen kann?
BlackJack

@congomonster: Also bei mir funktioniert das. Was passiert denn, wenn Du das im Terminal direkt eingibst?
congomonster
User
Beiträge: 5
Registriert: Freitag 6. Mai 2016, 20:11

Hallo BlackJack,

danke für die Antwort. Wenn ich im Terminal

Code: Alles auswählen

xdg-open /home/username
eingebe passiert gar nichts. Es kommt auch keine Fehlermeldung. Gebe ich im Terminal eine Datei an:

Code: Alles auswählen

xdg-open '/home/username/Bilder/forest deer illustation.jpg'
öffnet sich das Standard Programm für Bilder. Kann es sein das xdg-open nicht "nur" den Ordner anzeigen kann?
congomonster
User
Beiträge: 5
Registriert: Freitag 6. Mai 2016, 20:11

Wenn ich das Kommando im Terminal mit sudo absetze funktioniert es.

Code: Alles auswählen

sudo xdg-open /home/username
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

congomonster hat geschrieben:Kann es sein das xdg-open nicht "nur" den Ordner anzeigen kann?
xdg-open kann schon ein Program starten dass den Ordnerinhalt anzeigt, es muss nur richtig konfiguriert sein.

Du könntest nachschauen welches Program xdg-open für Ordner aufruft:

Code: Alles auswählen

xdg-mime query default inode/directory
congomonster
User
Beiträge: 5
Registriert: Freitag 6. Mai 2016, 20:11

Mit diesem Code:

Code: Alles auswählen

xdg-mime query default inode/directory
erscheint das:
org.gnome.Nautilus.desktop

Es funktioniert ja auch mit sudo. Nur ohne sudo nicht. Ich muss mal testen ob nur Debian sich so verhält.
BlackJack

@congomonster: Es sollte aber auch als normaler Nutzer funktionieren. Bei mir ist es übrigens Kubuntu für den Test gewesen.

Dass es mit sudo funktioniert ist egal denn das sollte man auf keinen Fall machen. Dann kannst Du auch gleich die Benutzer und damit die Sicherheit ignorieren.

Bist Du sicher das *gar nichts* passiert? Hast Du vielleicht bereits Nautilus für den Benutzer offen und statt ein neues Fenster zu öffnen wird dort einfach ein weiterer Tab in dem laufenden Nautilus erstellt und Du hast es nur nicht bemerkt?
congomonster
User
Beiträge: 5
Registriert: Freitag 6. Mai 2016, 20:11

Ich denke es läuft kein weiterer Nautilus. Das erste was ich mache, nach dem Start ist das Terminal zu starten.
ich habe auch probiert Nautilus als Prozess zu beenden.

Code: Alles auswählen

sudo killall nautilus
Dann kommt auch: nautilus: Kein Prozess gefunden
Also gehe ich mal davon aus, das der Prozess nicht läuft. Ich habe auch probiert Nautilus zu deinstallieren und wieder zu installieren.
Aber ich denke, es ist eher ein Linux Problem anstatt ein Python Problem. Wenn es bei anderen läuft, bin ich erstmal beruhigt. :D
Ich muss halt nur rausfinden, warum es bei mir nicht geht.
Antworten