2013-03-16 99 views
2

我試圖在Notepad ++中複製IDLE的alt + m命令(在sys路徑中打開一個模塊)。我喜歡Notepad ++進行編輯(而不是IDLE),但這是我無法找到的一個功能。從程序在記事本++中打開Python文件

當按下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

如果您的.py文件將爲關聯帶記事本++ os.startfile(f, 'notepad++.exe')將爲您工作(請參閱ftype)。

除非,你想創建此關聯,下面的代碼將打開記事本+ +爲您提供:

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

參考:subprocess.call()

+0

謝謝!我需要第二個,因爲我從另一個Python程序打開Python('.py')文件。另外,我添加了一個鏈接到子流程模塊。 – 2013-03-16 15:31:39

+0

另外,你知道如何找到一個文件完整的文件路徑完全給定的文件名? – 2013-03-16 15:33:29

+0

os.path.abspath(path)http://docs.python.org/2/library/os.path.html但請記住真正的_solely_路徑無法解析,Python運行時沒有辦法如果它位於幾個文件夾中,則推導出foo.txt的完整路徑 – 2013-03-16 15:35:05