Bonjour,
je cherche un équialent à os.startfile pour Linux et Mac O$ si cela existe ?
Toute info. est la bienvenue.os.startfile(path[, operation])
Start a file with its associated application.
...
Availability: Windows
Bonjour,
je cherche un équialent à os.startfile pour Linux et Mac O$ si cela existe ?
Toute info. est la bienvenue.os.startfile(path[, operation])
Start a file with its associated application.
...
Availability: Windows
Bonjour rambc,
A vrais dire cela dépend sous Linux :
kfmclient pour KDE, gnome-open sous Gnome, xdg-open si xdg-utils est installé (mais il me semble qu'il recherche les programme précédent) etc...
A vrais dire, et après les avoir recensés, une recherche dans le path de la présence de l'un d'eux me semble une idée.
@+
Merci d'utiliser le forum pour les questions techniques.
Par contre je n'avais pas vu cela
Il est possible que cela t'intéresse.
Merci d'utiliser le forum pour les questions techniques.
Sous Mac O$, il suffit de faire comme suit :
Il reste à voir comment aborder le problème sous Linux. Je vais étudier les liens que tu m'as donnés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 import os pathOfTheFile = "screenshot_01.jpg" os.system("open " + pathOfTheFile)
Sous Linux c'est which mais je préfère utiliser quelque chose de plus universel
Merci d'utiliser le forum pour les questions techniques.
Merci pour which.
Voici un début de brouillon possible. Qu'en penses-tu ? Je n'ai pas fait la partie qui donne l'OS utilisé mais cela ne pose pas de problème avec les commentaires mis dans le code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 #! /usr/bin/env python #coding=utf-8 # Source : http://www.developpez.net/forums/d856184/autres-langages/python-zope/general-python/recherche-equivalent-linux-mac-o-os-startfile/#post4886241 # Package which : http://code.google.com/p/which/ pathOfTheFile = "screenshot_01.jpg" import os import sys import which # VALUES OF sys.platform # # Z ! Mac Book Pro : darwin # # Officiel doc. # Windows 'win32' # Windows/Cygwin 'cygwin' # Mac OS X 'darwin' # OS/2 'os2' # OS/2 EMX 'os2emx' # RiscOS 'riscos' # AtheOS 'atheos' actualOS = 'linux' if actualOS == 'mac': os.system("open " + pathOfTheFile) elif actualOS == 'windows': os.startfile(pathOfTheFile) elif actualOS == 'linux': try: which.which("gnome-open") os.system("gnome-open " + pathOfTheFile) except: which.which("kfmclient") os.system("kfmclient " + pathOfTheFile)
Bonjour,
Il en existe d'autres que kfmclient ou gnome-open. A ta place je ferais une liste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 from platform import system as actualOS if actualOS() == 'Windows': blabla pour Win elif actualOS() == 'Linux': blabla pour Linux elif actualOS() == 'Darwin': blabla pour Mac OS
Merci d'utiliser le forum pour les questions techniques.
Merci pour l'import simplifié.
C'est ce que je ferais au gré de mes besoins qui pour l'instant vont de Windaube XP-Vista-Seven à Mac O$ en passant par Ubuntu Gnome et KDE.
PS 1 : il reste juste à voir comment sont générées les erreurs dans which car finalement c'est juste cela qui m'intéresse ici.
PS 2 : par contre, which s'avère hyper utile pour la configuration d'un logiciel. Par exemple, il existe un éditeur de docs LaTeX qui demande à l'utilisateur de configurer les chemins d'accès aux "éxécutables" latex. Une vraie galère pour un non averti. Avec which, on pourrait lui mâcher le travail.
Effectivement ce module est intéressant.
Personnellement je l'utilise avec ProcessOpen en import d'en process pour gérer l'ouverture de programmes sur des systèmes Linux post subprocess (il existe de tout en entreprise ) et cela fonctionne pile poil.
Exemples :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 def _whichFirstArg(cmd, env=None): if cmd.startswith('"'): idx = cmd.replace('\\"', 'XX').find('"', 1) if idx == -1: raise ProcessError("Commande mal formee: %r" % cmd) first, rest = cmd[1:idx], cmd[idx+1:] rest = rest.lstrip() else: if ' ' in cmd: first, rest = cmd.split(' ', 1) else: first, rest = cmd, "" if os.sep in first: altpath = [os.path.dirname(first)] firstbase = os.path.basename(first) candidate = which.which(firstbase, path=altpath) elif env: altpath = _getPathFromEnv(env) if altpath: candidate = which.which(first, altpath.split(os.pathsep)) else: candidate = which.which(first) candidate = which.which(first) if candidate: return _joinArgv( [candidate] ) + ' ' + rest else: raise ProcessError("Pas de commande approprie trouve "\ "pour: %r" % cmd)Bonne découverte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 try: cmd = _whichFirstArg(cmd, env) except (ProcessError, which.WhichError):
Merci d'utiliser le forum pour les questions techniques.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager