Wie springe ich in Python zu einer Datei im Windows Explorer? Ich habe eine Lösung gefunden, um zu Ordnern zu springen:
import subprocess
subprocess.Popen('explorer "C:\path\of\folder"')
aber ich habe keine lösung für dateien.
Wie springe ich in Python zu einer Datei im Windows Explorer? Ich habe eine Lösung gefunden, um zu Ordnern zu springen:
import subprocess
subprocess.Popen('explorer "C:\path\of\folder"')
aber ich habe keine lösung für dateien.
Antworten:
Über Geoff Chappells Windows Explorer-Befehlszeile
import subprocess
subprocess.Popen(r'explorer /select,"C:\path\of\folder\file"')
comma (,)
dazwischen hinzuzufügen /select
und path
dann My Documents
wird das geöffnet. dh explorer /select,"C:\path\of\folder\file"
ist nicht richtigexplorer /select "C:\path\of\folder\file"
Eine schönere und sicherere Lösung (leider nur unter Windows) ist os.startfile () .
Wenn anstelle einer Datei ein Ordner angegeben wird, wird der Explorer geöffnet.
Ich bin mir bewusst, dass ich die Frage nicht vollständig beantworte, da es keine Datei auswählt, aber die Verwendung subprocess
ist immer eine schlechte Idee und diese Lösung kann anderen Menschen helfen.
startfile
existiert nur unter Windows ( stackoverflow.com/questions/29823028/… ).
os.startfile()
akzeptiert keine Argumente ☹ Obwohl es im Falle des Explorers einfach zu sein scheint, den Prozess über subprocess.run
orPopen
Da explorer
dies überschrieben werden könnte, wäre es etwas sicherer, direkt auf die ausführbare Datei zu verweisen. (musste nur auch darauf geschult werden)
Und wenn Sie schon dabei sind: Verwenden Sie die aktuelle Unterprozess-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])
Aus irgendeinem Grund öffnet es unter Windows 7 immer den Benutzerpfad, für mich hat folgendes ausgearbeitet:
import subprocess
subprocess.call("explorer C:\\temp\\yourpath", shell=True)
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 wechselt, nachdem er diese Anweisung irgendwo in seinem Programm ausgeführt hat?
shell=True
tho! security.openstack.org/guidelines/…
Alternativ können Sie das Datei- Openbox-Modul von EasyGUI verwenden , um den Datei-Explorer zu öffnen, durch den der Benutzer klicken und dann eine Datei auswählen kann (wobei der vollständige Dateipfad zurückgegeben wird).
import easygui
file = easygui.fileopenbox()