5

Notepad ++でIDLEのalt+mコマンド(パス内のモジュールを開く)を複製しようとしています。sys私は(IDLEではなく)編集用のNotepad ++が好きですが、これは私が見つけられない機能の1つです。

が押されたとき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'フルパスを見つけるにはどうすればよいですか?次の2つのフォルダのいずれかになります:'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++

これはサブフォルダーを考慮しておらず、かなり不格好なようです。ありがとう!

4

1 に答える 1

5

.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()

于 2013-03-16T15:23:54.770 に答える