python3 os.popen()Windows资源管理器专注于特定目录

时间:2013-11-07 13:19:30

标签: python windows python-3.x windows-explorer

我有一些代码会为用户打开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语法那让我难过。

2 个答案:

答案 0 :(得分:1)

对于仍然需要答案的人,我设法以这种方式实际打开特定目录:

    # 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()

答案 1 :(得分:0)

摆脱选项之间的空间:

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

要使此功能与要打开的路径中的空格一致,建议您使用subprocess.Popen()

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

相关:Windows Explorer command line options