Проводник python3 os.popen() с акцентом на конкретный каталог

У меня есть некоторый код, который откроет проводник Windows для пользователя, но он всегда открывается с акцентом на «мои документы», которые, как я понимаю, являются проводником Windows по умолчанию.

Я могу вернуться на один уровень назад к текущему каталогу имени пользователя, но я не могу заставить его открываться на сетевом диске> в папке, определенной переменной. Я попытался добавить фокус с помощью сценария OS vb (пришлось попробовать что-то, и это выглядело очень похоже по синтаксису?), но это по-прежнему игнорирует путь к папке и обращается к пользовательскому каталогу:

def Open_Win_Explorer_and_Select_Dir():
    import subprocess
    fldr2opn = currentproject.get()
    # os.popen('start explorer,"%s" ' % fldr2opn)
    os.popen('c:\windows\EXPLORER.EXE /n, /select, "%s"' % fldr2opn)

если я вставлю оператор print(fldr2opn) перед os.popen(), он вернет правильный путь, в данном случае "P:\Projects_2013\test_dir", поэтому я знаю, что это правильно, это просто синтаксис os.popen, который поставил меня в тупик.


person jon141    schedule 07.11.2013    source источник


Ответы (2)


Для людей, которым все еще нужен ответ, мне удалось открыть определенный каталог следующим образом:

    # For an absolute path or relative from My Documents
    import subprocess
    p = subprocess.Popen('C:\Windows\EXPLORER.EXE /n /cwd="' + directory + '"')
    p.wait()

    # For a relative path from the current directory
    import subprocess
    import os
    p = subprocess.Popen('C:\Windows\EXPLORER.EXE /n /cwd="' +
                         os.getcwd() + os.sep + directory + '"')
    p.wait()
person Ins4nity    schedule 18.05.2015

Избавьтесь от пробела между вариантами:

os.popen('c:\windows\EXPLORER.EXE /n,/select,%s' % fldr2opn)

Чтобы это работало с пробелами в пути к открытию, вы предлагаете использовать subprocess.Popen() с

cmd = ['c:\windows\EXPLORER.EXE', '/n,/select,%s' % fldr2opn]

Связано: параметры командной строки проводника Windows

person Aaron Digulla    schedule 07.11.2013
comment
так близко .. я изменил строку на 'subprocess.Popen('c:\windows\EXPLORER.EXE /cwd=C:\Temp')', и это работает, он откроет проводник, ориентированный на каталог C:\Temp но когда я пытаюсь заменить строку с помощью 'subprocess.Popen('c:\windows\EXPLORER.EXE/cwd=%s' %fldr2opn)', он открывает только папку с моими документами, я пробовал все, что мог думать с этим синтаксисом, но ему это не нравится, и я не понимаю, почему, я не получаю сообщение об ошибке, потому что открывается проводник - person jon141; 07.11.2013
comment
Попробуйте subprocess.Popen('c:\windows\EXPLORER.EXE', cwd=fldr2opn) - person Aaron Digulla; 07.11.2013
comment
к сожалению, это тоже не работает, он открывает проводник в папке «библиотека»? это довольно странно. - person jon141; 11.11.2013
comment
Теперь я нашел справочную страницу для проводника. Смотрите мои правки для решения. - person Aaron Digulla; 11.11.2013
comment
я прочитал страницу для проводника и мне удалось открыть проводник в /currentuser/мои документы (проводник по умолчанию) часть кода после «проводника», по-видимому, игнорируется? 'def Open_Win_Explorer_and_Select_Dir(): import subprocess имя_флдр = os.path.basename(currentproject.get()) print(имя_флдр) #subprocess.Popen('c:\\windows\\EXPLORER.EXE'cwd=('P:\ \Projects_2013\\')fldrname) subprocess.Popen('explorer/select,//WRDBSVR/Project_Data/Projects_2013/'+fldrname) - person jon141; 12.11.2013
comment
Я думаю, вам все еще нужен /n. И вам нужно использовать обратную косую черту для пути к файлу, потому что Explorer может не поддерживать прямую косую черту из командной строки (многие версии также не поддерживают ее из пользовательского интерфейса). - person Aaron Digulla; 12.11.2013