【问题标题】:python3 os.popen() windows explorer with focus on specific directorypython3 os.popen() windows explorer,专注于特定目录
【发布时间】:2013-11-07 13:19:29
【问题描述】:

我有一些代码可以为用户打开 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)

如果我在os.popen() 之前输入print(fldr2opn) 语句,它会在这种情况下返回正确的路径"P:\Projects_2013\test_dir",所以我知道这是正确的,只是os.popen 语法让我感到困惑。

【问题讨论】:

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


    【解决方案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()
    

    【讨论】:

      【解决方案2】:

      去掉选项之间的空格:

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

      要使打开路径中的空格起作用,建议使用subprocess.Popen() with

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

      相关:Windows Explorer command line options

      【讨论】:

      • 如此接近.. 我已将行更改为 ' subprocess.Popen('c:\windows\EXPLORER.EXE /cwd="C:\Temp"')' 这行得通,它会打开资源管理器专注于 C:\Temp 目录,但是当我尝试使用 'subprocess.Popen('c:\windows\EXPLORER.EXE /cwd="%s"' %fldr2opn)' 替换字符串时,它只打开我的文档文件夹,我用这种语法尝试了我能想到的所有方法,但它不喜欢它,我不明白为什么,因为资源管理器打开,我没有收到错误
      • 试试subprocess.Popen('c:\windows\EXPLORER.EXE', cwd=fldr2opn)
      • 不幸的是,它也不起作用,它会在“库”文件夹中打开资源管理器?这很奇怪。
      • 我现在找到了资源管理器的手册页。请参阅我的编辑以获取解决方案。
      • 我阅读了资源管理器的页面并设法在 /currentuser/my 文档中打开资源管理器(资源管理器默认)“资源管理器”之后的代码部分显然被忽略了? 'def Open_Win_Explorer_and_Select_Dir(): import subprocess fldrname = os.path.basename(currentproject.get()) print(fldrname) #subprocess.Popen('c:\\windows\\EXPLORER.EXE'cwd=('P:\ \Projects_2013\\')fldrname) subprocess.Popen('explorer /select,//WRDBSVR/Project_Data/Projects_2013/'+fldrname)
      猜你喜欢
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多