Открыть проводник в файле

Как в Python перейти к файлу в проводнике Windows? Я нашел решение для перехода по папкам:

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

но у меня нет решения для файлов.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
80
0
89 941
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

От Командная строка Windows Explorer Джеффа Чаппелла

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

Я знаю, что это очень старый пост, но его стоит попробовать. У меня есть модуль, который подключает библиотеку документов sharepoint к окну проводника Windows, чтобы копия, прошедшая локально, загружалась в библиотеку документов sharepoint. Иногда его нужно обновлять, и я использую селен для повторного подключения, но теперь у меня открыто окно проводника Windows. Я не знаю, как закрыть это окно, чтобы графический интерфейс приложения снова стал фокусом для конечного пользователя. Есть идеи, как выбрать это окно и закрыть его?

Benjooster 26.09.2013 16:53

ха-ха, я читал запятую как сумматор, я думал, что WTF происходит. Это часть струны.

shawn 16.01.2014 05:08

По какой-то странной причине в моей системе Windows 10 это просто открывает пользовательские библиотеки проводника с фокусом «Мои документы».

MisterGeeky 14.11.2015 22:47
subprocess.Popen(r'explorer /select,"C:\path\of\folder\file"') работает, но как мне поместить это окно поверх других окон, если пользователь переходит в какое-то другое окно после выполнения этого оператора где-то в своей программе?
Nancy 21.01.2016 09:13

@Nik Это похоже на год позже, но я думаю, причина в том, что ваш путь к файлу не указывает на конкретный файл. Кажется, вы не можете просто указать на каталог.

nickvans 11.11.2016 03:10

Рабочая ссылка (на данный момент) на параметры командной строки: geoffchappell.com/studies/windows/shell/explorer/cmdline.htm

AGN Gazer 07.06.2018 08:56

Использование этого метода даст мне код возврата 1, даже если окно проводника открывается правильно и выбирает файл. Кто-нибудь знает, почему это, может быть, само по себе стоит вопроса? (Я получаю код возврата 1, если использую строковую команду с os.system, subprocess.call или subprocess.Popen и запрашиваю код возврата.)

Philip Scadding 19.09.2018 17:16

У меня та же проблема, что и у @MisterGeeky, он просто открывает «Мои документы». Я почти уверен, что это как-то связано с обратной косой чертой ...

birgersp 03.09.2019 12:37

Я забыл добавить comma (,) между /select и path, тогда My Documents открывается. т.е. explorer /select,"C:\path\of\folder\file" правильный, а не этот explorer /select "C:\path\of\folder\file"

Phani Rithvij 25.12.2019 11:01

Хороший ресурс для параметров CMD проводника: ss64.com/nt/explorer.html

Eli 14.03.2020 18:47

если вы используете косую черту в пути к файлу, сделайте filepath.replace ('/', '\\'), чтобы он был похож на C: \ path \ of \ folder \ file

Paul Sumpner 14.04.2020 07:58

По какой-то причине в Windows 7 он всегда открывает путь пользователей, для меня сработало следующее:

import subprocess
subprocess.call("explorer C:\\temp\\yourpath", shell=True)
subprocess.Popen(r'explorer /select,"C:\path\of\folder\file"') работает, но как мне поместить это окно поверх других окон, если пользователь переходит в какое-то другое окно после выполнения этого оператора где-то в своей программе?
Nancy 21.01.2016 09:14

Это должно автоматически появиться спереди

user1767754 24.01.2016 00:48

Старайтесь избегать использования shell=True tho! security.openstack.org/guidelines/…

ewerybody 21.06.2018 12:40

Пока вы знаете, где используете, и это в закрытой среде, это нормально.

user1767754 21.06.2018 20:30

Более приятное и безопасное решение (к сожалению, только в Windows) - os.startfile ().

Когда ему дается папка вместо файла, он откроет проводник.

Я знаю, что не могу полностью ответить на этот вопрос, поскольку не выбираю файл, но использование subprocess всегда является плохой идеей, и это решение может помочь другим людям.

Да, конечно, я понимаю, что небезопасно, но я был в полной безопасности :) Спасибо за ваш совет, хотя это тоже помогло мне (да, на протяжении многих лет)

Kirill Titov 15.03.2018 00:52

Не очень кросс-ОС, startfile существует только в Windows (stackoverflow.com/questions/29823028/…).

c z 10.05.2018 18:53

Еще один облом: os.startfile() не принимает аргументы ☹ Хотя в случае с проводником кажется несложным отсоединить процесс через subprocess.run или Popen

ewerybody 21.06.2018 12:38

Поскольку explorer можно переопределить, было бы безопаснее указывать непосредственно на исполняемый файл. (просто тоже должно было быть учился на этом)

И пока вы это делаете: используйте текущий API подпроцесса 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])

В качестве альтернативы вы можете использовать модуль fileopenbox EasyGUI, чтобы открыть файловый менеджер, чтобы пользователь мог щелкнуть по нему, а затем выбрать файл (возвращая полный путь к файлу).

import easygui
file = easygui.fileopenbox()

Для тех, кто задается вопросом, как использовать переменную вместо прямого пути к файлу. Приведенный ниже код откроет проводник и выделит указанный файл.

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

Приведенный ниже код просто откроет указанную папку в проводнике, не выделяя какой-либо конкретный файл.

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

Я тестировал только на окнах

Другие вопросы по теме