从程序中在Notepad++中打开Python文件

5 投票
1 回答
5982 浏览
提问于 2025-04-17 19:19

我想在Notepad++中实现IDLE的alt + m命令(在sys路径中打开一个模块)。我喜欢用Notepad++来编辑代码(而不是IDLE),但这个功能我找不到。

当我按下alt+m时,我希望它能运行一个程序,询问我想要打开的模块(这个比较简单,我可以做到)。我的问题是如何找到这个模块,然后在Notepad++中打开它,而不仅仅是运行程序。此外,我希望它在Notepad++的同一个窗口中打开,而不是新开一个窗口。

我试过这个:

import os
f = r"D:\my_stuff\Google Drive\Modules\nums.py"
os.startfile(f, 'notepad++.exe')

但是,我遇到了这个错误:

Traceback (most recent call last):
  File '_filePath_', line 3, in <module>
    os.startfile(f, 'notepad++.exe')
OSError: [WinError 1155] No application is associated with the specified file for this operation: 'D:\\my_stuff\\Google Drive\\Modules\\nums.py'

我该如何解决这个问题?

另外,给定一个字符串,比如'nums.py',我该如何找到它的完整路径?它会在两个文件夹中的一个:'D:\\my_stuff\\Google Drive\\Modules'或者'C:\\Python27\Lib'(它也可能在'Lib'文件夹中的各种子文件夹里)。或者,我也可以简单地这样做:

try:
    fullPath = r'D:\\my_stuff\\Google Drive\\Modules\\' + f
    # method of opening file in Notepad++
except (IOError, FileNotFoundError):
    fullPath = r'C:\\Python27\\Lib\\' + f
    # open in Notepad++

但这样没有考虑到子文件夹,看起来有点笨拙。谢谢!

1 个回答

6

如果你的 .py 文件已经和 Notepad++ 关联好了,那么使用 os.startfile(f, 'notepad++.exe') 这个代码就能正常工作(具体可以参考 ftype)。

如果你还没有设置这种关联,下面的代码可以帮你打开 Notepad++:

import subprocess
subprocess.call([r"c:\Program ...Notepad++.exe", r"D:\my_stuff\Google Drive\Modules\nums.py"])

参考资料:subprocess.call()

撰写回答