2012-01-01 5 views
9

Pythonスクリプトを特定のファイルタイプ(例:* .foo)のデフォルトアプリケーションにするにはどうすればよいですか?同様に、Finder/Explorerでファイルをダブルクリックすると、ファイルをPythonスクリプトで開くことができます。Pythonスクリプトで特定のファイルタイプを開きますか?

これはWindowsおよび/またはOS Xで可能ですか?もし問題があれば、アプリケーションはPySideアプリです。

+0

Javaスタブを起動するのはあなたに適していますか? http:// stackoverflow。com/questions/550329/how-to-open-a-file-with-the-default-associated-programそれ以外の場合は、ポータブルなソリューションが必要な場合は、あなたは運がないと確信しています。 – kay

+0

その質問から、どのアプリケーションでもファイルを開く方法を見つけることができませんでした。その '.open'メソッドは、デフォルトのアプリケーションでのみファイルを開くようです。可能であれば、pythonスクリプトを開くためにJavaアプリケーションが必要なので、私の答えよりも優れた解決策ではありません。 – potato

答えて

-1
  1. タイプの任意のファイルを探すfoo
  2. 右クリック - >Get Infoをするか、ファイルのアイコンをクリックし、情報を取得したり、ファイルをクリックしてくださいクリックして、ヒットコマンド + I
  3. 表示されるOpen Withペインに、
  4. のパスを選択します。これを選択すると、change Allボタン
  5. をクリックできます
  6. それはちょうどWindows上continue
+0

これはどのOSですか? – Chris

+0

Chris、Mac OS X. –

+0

* .appファイルではなく* .pyファイルを選択する方法はありますか(py2appか何かから来ていますか?) – c00kiemonster

-4

を言って、確認を求めます:

  1. ファイルを右クリックし(私はこの例では.docxファイルを使用)
  2. からOpen with...
  3. を選択アプリケーション一覧、選択python
  4. 任意:選択Always use the selected program to open this kind of file

注:この意志実行 Pythonシェルのコンテキストで.docxファイルの内容。ファイルの内容の評価が終了するとすぐに終了します。ワードプロセッサでファイルを編集する場合は、notepad++をダウンロードし、そのアプリケーションをデフォルトとして選択する必要があります。

+4

OPは、python自体ではなく、自分自身のpython script_で特定のファイルタイプを開くことを望んでいます。 – ekhumoro

-1

私は自分自身で答えを探している間にこの古い質問を見つけました。私は私の解決策を共有すると思いました。私は単純なCプログラムを使ってPythonスクリプトに引数を渡し、Pythonスクリプトをコンパイルしなくてもスクリプトを実行できるようにしました。ここに私のCプログラムがあります:

int main(int argc, char *argv[]){ 
    char cmd[0xFF]; 
    // For me, argv[1] is the location of the file that is being opened. I'm not sure if this is different on other OSes 
    snprintf(cmd,sizeof cmd,"python YOUR_PYTHON_SCRIPT_HERE.py -a %s", argv[1]); 
    system(cmd); 
    return 0; 
} 

次に、cプログラムをコンパイルして、ファイル拡張子のデフォルトアプリケーションとして設定しました。
次に、pythonスクリプトYOUR_PYTHON_SCRIPT_HEREにあります。PY、私はこのような引数を受け取る:

import sys 
assert len(sys.argv) > 2 # Breaks if you call the script without the arguments 
theFile = " ".join(sys.argv[2:]) # What the c program gives us 
print(theFile) # Print it out to prove that it works 

theFileを使用してファイルの内容を取得します
を開かれているファイルの場所が含まれます:

with open(theFile,"r") as f: 
    fileContents = f.read() 
3

のMac OS X

Mac OS Xオートメーターを使用すると、Pythonアプリを呼び出して入力ファイルをパットに渡すアプリケーションを作成できますhを文字列引数として返します。アプリケーションのワークフローウィザードでは、「ファイル名を指定して実行シェルスクリプトを」アクションを追加as argumentsとしてPass input:を選択し、テキストボックスに追加します。

python /path/to/my/app/myapp.py "[email protected]" 

どんな引数に沿っ"[email protected]"パスが通り(選択したファイル別名)入力にありました文字列。あなたのスクリプトが入力(sys.argv)を文字列のリスト(最初のものはpython appのパス)として扱うように設定されている限り、それは動作します。

このAutomatorワークフローを保存すると、他のアプリと同様にOS Xによって処理され、そのアプリを "* .foo"タイプのファイルのデフォルトとして設定できます。そのアプリに「* .foo」を関連付けるには、.fooファイルGet InfoOpen with: Other...を右クリックし、Automatorで作成したアプリを選択してChange All...ボタンをクリックします。

windows

Windowsでも同様ですが、それほど関係のないアプローチが有効です。あなたは、おそらく次のようにバッチファイル(.bat)を作成することができます。

python C:\path\to\my\app\myapp.py %* 

%*は、すべての引数に展開されます。

ファイル拡張子をそのバッチファイルに関連付けることができれば、それを実行できます。それがあなたの解決策です。しかし、私はこのWindowsソリューションを試していないので、塩の粒でそれを取る。一方、Macのソリューションは、私はテストしました。

0

例として、私が書いた普遍的な解決策があります: 1)LinuxのボックスにコピーされたWindowsデスクトップリンク(* .URL)を開きます。 または 2)WindowsのボックスにコピーされたLinuxのデスクトップリンクを開きます。

ここでは両方のケースを扱うのPythonスクリプトは次のとおりです。Windowsの

# UseDesktopLink.py 
import sys 
import webbrowser 
script, filename = sys.argv 
file_object = open(filename,'r') 
for line in file_object: 
    if line[0:4]=="URL=": 
     url=line[4:] 
     webbrowser.open_new(url) 
file_object.close() 

、関連付けを処理するために(batファイル経由)スコット・Hのメソッドを使用します。

Linuxでは、WindowsのURLファイルを右クリックします。 [プロパティ]を選択し、[開く]をクリックします。 [追加]をクリックして新しいアプリケーションを追加します。次に、[アプリケーションの追加]ウィンドウの下部にある[カスタムコマンドを使用する]をクリックします。 UseDesktopLink.pyファイルを参照して、[開く]をクリックします。しかし、[追加]をクリックする前に、 "カスタムコマンドを使用する"の下のテキストボックスで、ファイル名の前に "python"を入れてください(引用符なし)。次に、[追加と終了]をクリックします。

希望に役立ちます。

関連する問題