2013-03-16 2 views
2

Я пытаюсь реплицировать команду IDLE alt + m (открыть модуль по пути sys) в Notepad ++. Мне нравится Notepad ++ для редактирования (а не IDLE), но это одна из особенностей, которую я не могу найти.Открыть файл Python в Notepad ++ из программы

Когда нажата кнопка 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 файлы будут связаны ж/Notepad ++ 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 ('.py') из другой программы Python. Кроме того, я добавил ссылку на модуль подпроцесса. –

+0

Кроме того, вы знаете, как найти полный путь к файлу только с именем файла? –

+0

os.path.abspath (путь) http://docs.python.org/2/library/os.path.html, но, пожалуйста, помните, что истинные пути _solely_ не могли быть разрешены, нет возможности выполнения Python выведите полный путь к файлу foo.txt, если он находится в нескольких папках. –

Смежные вопросы