コマンドシェルを使わずにPythonスクリプトを実行する方法はありますか? 拡張子 ".pyw"のファイルの命名は機能しません。Windowsコンソールを表示しないでPythonスクリプトを実行するには
EDIT:のShellExecuteで解決される問題()
コマンドシェルを使わずにPythonスクリプトを実行する方法はありますか? 拡張子 ".pyw"のファイルの命名は機能しません。Windowsコンソールを表示しないでPythonスクリプトを実行するには
EDIT:のShellExecuteで解決される問題()
ShellExecuteEx関数を使用します。
BOOL ShellExecuteEx(
_Inout_ SHELLEXECUTEINFO *pExecInfo
);
これはpExecInfoです: *** nShow - アプリケーションが
typedef struct _SHELLEXECUTEINFO {
DWORD cbSize;
ULONG fMask;
HWND hwnd;
LPCTSTR lpVerb;
LPCTSTR lpFile;
LPCTSTR lpParameters;
LPCTSTR lpDirectory;
int nShow;/*=0 if you don't want the console window to appear*/
HINSTANCE hInstApp;
LPVOID lpIDList;
LPCTSTR lpClass;
HKEY hkeyClass;
DWORD dwHotKey;
union {
HANDLE hIcon;
HANDLE hMonitor;
} DUMMYUNIONNAME;
HANDLE hProcess;
} SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO;
Pythonの実行ファイルpythonw.exe
スクリプトを起動するために使用してみてください。 WindowsのOSEで
は、コンソールアプリケーション(w
アウトとpython.exe
は、コンソールアプリケーションである)されている実行可能ファイルは、コンソールウィンドウを示す実行されます。一方、通常のWindowsアプリケーションでは、黒色のコンソールウィンドウが生成されません。
あなたはこの古い質問では、これら2つの実行に関する詳細を見つけることができます。pythonw.exe or python.exe?
そして、ここではアプリケーションのWindowsのさまざまな種類について:Difference between Windows and Console application
別のポストからこの情報が役立つことがあります。https://stackoverflow.com/a/30313091/6470259
を
python.exe
は、コンソール(端末)アプリケーションですCLIタイプのスクリプトを起動するためのにあります。 *既存のコンソールウィンドウから実行しない限り、python.exe
は新しいコンソールウィンドウを開きます。 * 標準sys.stdin
、sys.stdout
とsys.stderr
ストリーム コンソールウィンドウに接続あります。 *実行が同期です:
- 新しいコンソールウィンドウを作成した場合、スクリプトが終了するまで、それが開いたままになります。
- 既存のコンソールウィンドウから呼び出されると、プロンプトはスクリプトが終了するまでブロックされます。
- が起動するためのGUIアプリあるGUI /ノー-UI-AT-すべてのスクリプト。 * コンソールウィンドウなしが開かれています。コンソールウィンドウから起動
pythonw.exe
- 、スクリプトは単に打ち上げで、スクリプトがまだ実行されているかどうかをすぐにプロンプトに戻ったら、:*実行が 非同期です。 * 標準ストリーム
sys.stdin
,sys.stdout
およびsys.stderr
はは利用できませんです。- 注意:あなたは余分な手順を取っていない限り、これは潜在的に予期せぬ副作用があり:は黙っを中止する
- 未処理の例外は、スクリプトを引き起こす。
- Python 2.xでは、単に
print()
を使用しようとすると、(3.xでは、単に効果がありません)が発生する可能性があります。 へ
- は、スクリプト、および多くを学ぶための内から、 鉱山のthis answerを参照することを防ぎます。
- アドホック、出力リダイレクト:ありがとう、@handle。
pythonw.exe yourScript.pyw 1>stdout.txt 2>stderr.txt
(PowerShell:cmd /c pythonw.exe yourScript.pyw 1>stdout.txt 2>stderr.txt
) stdoutとstderrの出力をのファイルにキャプチャします。あなたはprint()
の使用は、あなたのスクリプトがpythonw.exe
で静かに失敗し、あなたはSTDOUT出力に興味がない唯一の理由であることを確信している場合は、コメントからハンドルのコマンド@ を使用します。pythonw.exe yourScript.pyw 1>NUL 2>&1
警告:この出力を*.pyw
スクリプトを直接( で、pythonw.exe
に渡すのではなく)と呼び出すときに、がではないように見えます。 あなたが理由を知っているかどうか、そして/またはそれがうまくいくかどうかを教えてください。することはでき デフォルトでスクリプトを実行します実行ファイルの制御 - 右のファイル名の拡張子を選択で - そのようエクスプローラから開いたときのように:
*.py
のファイルがpython.exe
*.pyw
ファイルに関連付けられたデフォルト(呼び出された)であるすべてのPythonでpythonw.exe
[ここ](http://stackoverflow.com/a/30313091/1222951)から恥知らずに盗られました。 –
に関連付けられたデフォルト(呼び出された)であり、インストールがされている場合には、2.5(そしておそらくそれ以前)以降をインストール行って適切に、.py
ファイルがpython.exe
に関連付けられていると.pyw
ファイルは協会が改ざんされている場合はpythonw.exe
に関連する、または異なる場合があり、特定のユーザーのために上書きされます。
実行コマンドで次のコマンド:
ftype | find "pythonw"
assoc | find ".pyw"
私が取得:
Python.NoConFile="D:\Program Files\Python27\pythonw.exe" "%1" %*
.pyw=Python.NoConFile
マシンの管理者でない場合は、.pyw
ファイルをpythonw.exe
に関連付けることができます。それにマイナーな問題、あなたは(まだそれはあまり使われないですが)
[HKEY_CLASSES_ROOT\Python.NoConFile\shell\open\command] @="\"L:\\Portable_Python_2.7.3.1\\App\\pythonw.exe\" \"%1\" %*"
'HKLM \ Software \ Classes'や' HKCU \ Software \ Classes'を修正するのが最善です。 'HKCR'仮想キーは、これらの2つのツリーのマージされたビューです。したがって、変更された結果は、現在定義されているキーによって異なります。 'HKCR'を使用する.regファイルをマージすると' HKCU'のサブキーがあればそれを修正し、存在していれば 'HKLM'のサブキーを修正し、そうでなければ' HKLM'でサブキーを作成します。したがって、キーとそのサブキーは、現在のユーザーに対して部分的に定義され、ローカルマシンに対して部分的に定義される可能性があります。 – eryksun
cmdの 'assoc'と' ftype'コマンドは 'HKLM \ Software \ Classes'キーのみを表示して変更するだけで、これらのキーはエクスプローラでのユーザ選択のための1つの可能性を定義しています。 '[HKCU | HKLM] \ Software \ Classes \ Applications'や' [HKCU | HKLM] \ Software \ Classes \ SystemFileAssociations'のデフォルトのように、ファイルの関連付けを定義できる場所は他にもあります。ユーザーの現在の選択は 'HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts'にありますが、これはGUIを使ってのみ変更できます。 – eryksun
おかげで、今、私のようなCからのPythonのファイルを実行しています、それを開いたときに表示される方法を指定するフラグこれはsystem( "python.pyw")です。今すぐ実行するにはどうすればいいですか? – David
@David、 'system'はcmdを使用してプログラムを実行します。これはコンソール以外のプログラムからコンソール以外のプログラムを実行するとコンソールを一時的に点滅させます。スクリプトにパラメータを渡さない場合は、代わりに 'os.startfile(" script.pyw ")'を使うことができます。しかし、まず.pywファイルの関連付けを修正します。 '[HKLM | HKCU] \ Software \ Classes \ .pyw'のデフォルト値は' Python.NoConFile'でなければなりません。次に、「開く」ダイアログを右クリックして、.pywスクリプトに常にPythonを使用するように選択します。複数のPythonエントリがある場合は、正しく動作するまでそれらすべてを試してください。*「このPC上で別のアプリケーションを探しません」。 – eryksun