我正在尝试在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++
这不包括子文件夹,看起来相当笨重。谢谢!
答案 0 :(得分:2)
如果您的.py文件关联 w / 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"])