3

64ビットラップトップでUbuntu 12.04を使用しています。Python コードを使用してアプリケーションを開こうとしています。

import os
os.system("open /home/utsav/ab.txt")

次のエラーが発生します。

「コンソール 256 を参照するファイル記述子を取得できませんでした」

どのコマンドを使用しますか?

4

4 に答える 4

1

使用しているコマンド -openは、実際には man ページで として参照されている別のコマンドopenvtであり、仮想端末を開きます。

それはあなたがやりたいことだとは思わないので、別のコマンド (gnome-open、xdg-open、geany、gedit、vim、nano など) を使用することをお勧めします。

于 2012-05-30T16:06:46.510 に答える
0

価値のあることとして、Python 2.7.3 のドキュメントには、osモジュールは非推奨であり、subprocess代わりにモジュールを使用する必要があると記載されています。この方法でコマンドを実行するにはsubprocess.call(args, ...)( 「subprocess モジュールの使用」 ) を使用できます。

以前の回答に基づいて、openMac OS X およびgnome-openGnome デスクトップ環境を実行している Linux ディストリビューションに使用できます。(確認gnome-openxdg-openたところ、どちらも Fedora 16 で動作します。) Windows は少し扱いに​​くいです。

Windows の場合は を使用する必要がありstartますが、ファイルへのパスまたはファイル名にスペースが含まれていると正しく機能しません。ファイル名を引用しても、完全には修正されません。これstartは、引用符で囲まれたマークされていない引数がタイトルであると想定しているためです (たとえば、新しいcmdインターフェイス ウィンドウの場合)。タイトルも開くファイルもマークされた引数ではないため、これは問題です。呼び出しを正しく機能させるには、次のようなことを行う必要がありますstart "DummyTitle" "Filename with spaces.ext"

それで、私たちが持っているのは次のとおりです。

  • Mac OS X:subprocess.call(['open','/path/to/file'])

  • Gnome DE を実行する Linux:subprocess.call(['gnome-open','/path/to/file'])

  • ウィンドウズ:subprocess.call(['start','"DummyTitle"','"C:\\Path\\to\\File.ext"'])

またはそのようなもの。


2.7.3 より前のバージョンの Python ではos、質問で提案したように、これらの引数を文字列として使用してモジュールを使用できます (システム コールのコマンド部分を変更するだけです)。非推奨のルートos.startfile('/path/to/file')に行く場合は、そのファイルタイプに関連付けられているデフォルトが何であれ、ファイルを開くWindows用があることにも注意してください。os


他のデスクトップ環境を使用して OS でファイルを開く方法はまだ確認されていないことに注意してください。この回答の改善を提案してください!

于 2012-05-31T01:37:53.587 に答える
0

openOS-Xで動作し、最終的に使用するubuntuの下で動作しますgnome-open(k-desktopを使用している場合、対応するコマンドが何であるかわかりません)。

編集

Niklas B. のコメントに基づいて、おそらく も試すことができますxdg-open

于 2012-05-30T16:05:37.307 に答える