Kirill Titov
Kirill Titov

Reputation: 2099

Open explorer on a file

In Python, how do I jump to a file in the Windows Explorer? I found a solution for jumping to folders:

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

but I have no solution for files.

Upvotes: 106

Views: 175233

Answers (11)

Newbyte
Newbyte

Reputation: 3240

This is not entirely an answer to the question, but it helped me so I thought it might help others too.

If you use are using wxPython/wxWidgets, you can try the wx.LaunchDefaultApplication and wx.LaunchDefaultBrowser methods. I'm not sure how they behave on Windows, but on my Linux setup they both open my default file manager if I provide a local path that points to a directory as the document or url parameter, respectively.

Upvotes: 0

Gokul-Mylsami
Gokul-Mylsami

Reputation: 21

import os 
path = "C:\path\of\folder"
os.startfile(path)

using this cmd you can go to the path in the file explorer

Upvotes: 2

Shivam Kumar
Shivam Kumar

Reputation: 86

import os
os.system('notepad filename')

Example 1. If I have a file no.txt in same directory

os.system('notepad no.txt')

Example 2. If I want to open file in some other directory

os.system('notepad "C:\\Users\\DELL\\Downloads\\a.txt"')

Note: I am running this on windows thats why I am using notepad, you can replace according to your os.

Upvotes: 1

RAllenAZ
RAllenAZ

Reputation: 46

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

I find that the explorer /open command will list the files in the directory. When I used the /select command (as shown above), explorer opened the parent directory and had my directory highlighted.

Upvotes: 1

Pixelsuft
Pixelsuft

Reputation: 137

Code To Open Folder In Explorer:

import os
import ctypes
SW_SHOWDEFAULT = 10
path_to_open = os.getenv('windir')
ctypes.windll.shell32.ShellExecuteW(0, "open", path_to_open, 0, 0, SW_SHOWDEFAULT)

Upvotes: 1

Guillaume Lebreton
Guillaume Lebreton

Reputation: 2773

A nicer and safer solution (only in Windows unfortunately) is os.startfile().

When it's given a folder instead of a file, it will open Explorer.

Im aware that i do not completely answer the question since its not selecting a file, but using subprocess is always kind of a bad idea (for security reasons) and this solution may help other people.

Upvotes: 39

Stephan Yazvinski
Stephan Yazvinski

Reputation: 578

For anyone wondering how to use a variable in place of a direct file path. The code below will open explorer and highlight the file specified.

import subprocess
subprocess.Popen(f'explorer /select,{variableHere}')

The code below will just open the specified folder in explorer without highlighting any specific file.

import subprocess
subprocess.Popen(f'explorer "{variableHere}"')

Ive only tested on windows

Upvotes: 8

ewerybody
ewerybody

Reputation: 1580

As explorer could be overridden it would be a little safer to point to the executable directly. (just had to be schooled on this too)

And while you're at it: use Python 3s current subprocess API: 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])

Upvotes: 18

Jasper
Jasper

Reputation: 182

Alternatively, you could use the fileopenbox module of EasyGUI to open the file explorer for the user to click through and then select a file (returning the full filepath).

import easygui
file = easygui.fileopenbox()

Upvotes: 11

Blair Conrad
Blair Conrad

Reputation: 241744

From Geoff Chappell's The Windows Explorer Command Line

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

Upvotes: 126

user1767754
user1767754

Reputation: 25094

For some reason, on windows 7 it always opens the users Path, for me following worked out:

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

Upvotes: 13

Related Questions