95 Stimmen

Explorer für eine Datei öffnen

Wie kann ich in Python zu einer Datei im Windows Explorer springen? Ich habe eine Lösung für das Springen zu Ordnern gefunden:

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

aber ich habe keine Lösung für Dateien.

112voto

Blair Conrad Punkte 217777

Von Geoff Chappell's Die Windows Explorer Befehlszeile

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

0 Stimmen

Ich bin mir bewusst, dass dies ein super alter Beitrag ist, aber es ist einen Versuch wert. Ich habe ein Modul, das eine Sharepoint-Dokumentenbibliothek mit einem Windows-Explorer-Fenster verbindet, so dass eine Kopie lokal in die Sharepoint-Dokumentenbibliothek hochgeladen wird. Dies muss gelegentlich aktualisiert werden, und ich verwende Selenium, um erneut zu verbinden, aber jetzt habe ich ein offenes Windows Explorer-Fenster. Ich weiß nicht, wie ich dieses Fenster schließen kann, damit die grafische Benutzeroberfläche der Anwendung wieder in den Fokus des Endbenutzers gerät. Haben Sie eine Idee, wie ich dieses Fenster auswählen und schließen kann?

0 Stimmen

Haha, ich habe das Komma als Zeichenfolgenaddierer gelesen und dachte mir: WTF, was ist hier los? Es ist ein Teil der Zeichenkette.

25 Stimmen

Aus irgendeinem seltsamen Grund öffnet dies auf meinem Windows 10-System nur die Explorer-Benutzerbibliotheken mit "Eigene Dateien" im Fokus.

35voto

Guillaume Lebreton Punkte 2011

Eine schönere und sicherere Lösung (leider nur unter Windows) ist os.startfile() .

Wenn ein Ordner statt einer Datei angegeben wird, wird der Explorer geöffnet.

Ich bin mir bewusst, dass ich die Frage nicht vollständig beantworte, da es sich nicht um die Auswahl einer Datei handelt, sondern um die Verwendung von subprocess ist immer eine schlechte Idee (aus Sicherheitsgründen), und diese Lösung kann anderen Menschen helfen.

0 Stimmen

Ja, sicher, ich verstehe die Idee der Unsicherheit, aber ich war sehr sicher :) Aber danke für deinen Tipp, das hat mir auch geholfen (ja, über die Jahre)

2 Stimmen

Nicht sehr OS-übergreifend, startfile existiert nur unter Windows ( stackoverflow.com/questions/29823028/ ).

1 Stimmen

Ein weiteres Ärgernis: os.startfile() akzeptiert keine Argumente Obwohl es im Falle des Explorers einfach scheint, den Prozess über subprocess.run o Popen

16voto

ewerybody Punkte 1213

Als explorer überschrieben werden könnte, wäre es ein wenig sicherer, direkt auf die ausführbare Datei zu verweisen. (musste nur sein geschult in diesem Bereich zu)

Und wenn Sie schon dabei sind: Verwenden Sie die aktuelle Subprozess-API von 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])

0 Stimmen

Dies funktioniert nicht unter Windows 10. Es öffnet Mein PC

0 Stimmen

@Patt: Ich habe gerade versucht r'C:\path\file.exe' , C:\\path\\file.exe y C:/path/file.exe sie funktionieren alle. Sie müssen nur darauf achten, dass Ihr Pfad richtig formatiert ist und os.path.isfile arbeitet daran.

0 Stimmen

@Spencer: Nein, das spielt keine Rolle. Das ist es, was path = os.path.normpath(path) ist für :)

11voto

user1767754 Punkte 20816

Aus irgendeinem Grund wird unter Windows 7 immer der Benutzerpfad geöffnet, bei mir klappte das Folgende:

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

1 Stimmen

subprocess.Popen(r'explorer /select,"C:\path\of\folder\file"') funktioniert, aber wie bekomme ich dieses Fenster über andere Fenster, wenn der Benutzer zu einem anderen Fenster geht, nachdem er diese Anweisung irgendwo in seinem Programm ausgeführt hat?

0 Stimmen

Dies sollte automatisch an der Vorderseite erscheinen

0 Stimmen

Versuchen Sie, die Verwendung von shell=True tho! security.openstack.org/guidelines/

11voto

MacNutter Punkte 174

Alternativ können Sie auch das Modul fileopenbox von EasyGUI um den Dateiexplorer zu öffnen, damit der Benutzer sich durchklicken und dann eine Datei auswählen kann (mit Angabe des vollständigen Dateipfads).

import easygui
file = easygui.fileopenbox()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X