105 votes

Ouvrir l'explorateur sur un fichier

En Python, comment accéder à un fichier dans l'explorateur Windows ? J'ai trouvé une solution pour accéder aux dossiers :

import subprocess
subprocess.Popen('explorer "C:\path\of\folder"')

mais je n'ai pas de solution pour les fichiers.

124voto

Blair Conrad Points 56195

En Geoff Chappell's La ligne de commande de l'Explorateur Windows

import subprocess
subprocess.Popen(r'explorer /select,"C:\path\of\folder\file"')

38voto

Une solution plus agréable et plus sûre (uniquement sous Windows malheureusement) est la suivante os.startfile() .

Lorsqu'on lui donne un dossier au lieu d'un fichier, il ouvre l'Explorateur.

Je suis conscient que je ne réponds pas complètement à la question puisqu'il ne s'agit pas de sélectionner un fichier, mais d'utiliser la fonction subprocess est toujours une mauvaise idée (pour des raisons de sécurité) et cette solution peut aider d'autres personnes.

16voto

ewerybody Points 27

En explorer peut être surchargée, il serait un peu plus sûr de pointer directement vers l'exécutable. (il suffisait d'être Je me suis renseigné sur ce sujet aussi)

Et pendant que vous y êtes, utilisez l'API de sous-processus de Python 3 : run()

import os
import subprocess
FILEBROWSER_PATH = os.path.join(os.getenv('WINDIR'), 'explorer.exe')

def explore(path):
    # explorer would choke on forward slashes
    path = os.path.normpath(path)

    if os.path.isdir(path):
        subprocess.run([FILEBROWSER_PATH, path])
    elif os.path.isfile(path):
        subprocess.run([FILEBROWSER_PATH, '/select,', path])

13voto

user1767754 Points 460

Pour une raison quelconque, sous Windows 7, il ouvre toujours le chemin d'accès de l'utilisateur, ce qui a fonctionné pour moi :

import subprocess
subprocess.call("explorer C:\\temp\\yourpath", shell=True)

11voto

MacNutter Points 11

Alternativement, vous pouvez utiliser le module fileopenbox de EasyGUI pour ouvrir l'explorateur de fichiers afin que l'utilisateur puisse cliquer et sélectionner un fichier (en indiquant le chemin d'accès complet).

import easygui
file = easygui.fileopenbox()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X