大家在 windows 下使用编辑器或者其它一些软件的时候应该遇到过这种功能: "在目录中显示", "打开文件所在目录",... 比如:
- PyCharm 在左边工程文件上右键时, 会有选项"show in explorer"
- CodeBlocks 直接在代码上右键会有个选项"open containing folder"
- VS(我的是 2015)在编辑器的 table 页的标签上右键也有个选项"open containing folder"
- programer's notepad 也有"open containing folder"
- 迅雷也有这种"打开文件夹"的功能
但是我发现它们的行为有两种:
对于同一个文件,
- pycharm, codeblocks 执行多少次"打开文件夹"就有多少个窗口出现
- 而 VS, programmer's notepad, 迅雷, 对于同一个文件, 无论执行多少次"打开文件夹"就只会出现一个窗口, 如果有一个旧的窗口存在了, 就仅仅是把它弹到最前面来.
对于第一种行为, 直接使用 windows 的命令即可, explorer /select, path
比如在控制台上执行explorer /select, C:\Windows, 这将会打开 C 盘并选中Windows 文件夹, 当然执行多少次就会打开多少个窗口.
问题是第二种行为如何实现?
程序是由 python+pyqt 写的, 如果第二种行为控制台命令可行的话, 直接把命令传给 subprocess 就行了, 如果控制台命令行不通, 在 python 下可有其它办法?