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.
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.
Von Geoff Chappell's Die Windows Explorer Befehlszeile
import subprocess
subprocess.Popen(r'explorer /select,"C:\path\of\folder\file"')
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?
Haha, ich habe das Komma als Zeichenfolgenaddierer gelesen und dachte mir: WTF, was ist hier los? Es ist ein Teil der Zeichenkette.
Aus irgendeinem seltsamen Grund öffnet dies auf meinem Windows 10-System nur die Explorer-Benutzerbibliotheken mit "Eigene Dateien" im Fokus.
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.
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)
Nicht sehr OS-übergreifend, startfile
existiert nur unter Windows ( stackoverflow.com/questions/29823028/ ).
Ein weiteres Ärgernis: os.startfile()
akzeptiert keine Argumente Obwohl es im Falle des Explorers einfach scheint, den Prozess über subprocess.run
o Popen
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])
@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.
@Spencer: Nein, das spielt keine Rolle. Das ist es, was path = os.path.normpath(path)
ist für :)
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?
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.