1. ホーム
  2. python

[解決済み] Windowsがシェルから実行されるPythonプログラムにコマンドライン引数を渡さない問題

2023-02-11 17:57:06

質問

PythonのプログラムをWindowsのコマンドシェルから実行コマンドとして直接実行しようとすると、コマンドライン引数が渡されないので困っています。 例えば、次のプログラム(test.py)があるとします。

import sys
print "Args: %r" % sys.argv[1:]

そして実行する。

>test foo
Args: []

と比べて

>python test.py foo
Args: ['foo']

私のコンフィギュレーションには

PATH=...;C:\python25;...
PATHEXT=...;.PY;....

>assoc .py
.py=Python.File

>ftype | grep Python
Python.CompiledFile="C:\Python25\python.exe" "%1" %*
Python.File="C:\Python25\python.exe" "%1" %*
Python.NoConFile="C:\Python25\pythonw.exe" "%1" %*

どのように解決するのですか?

私はこれを解決したと思います。 なぜかレジストリに2つ目の場所(HKEY_CLASSES_ROOTPython.Fileshellopencommandに格納されているファイルの関連付けによって示されているもの以外)があります。

[HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command]
@="\"C:\\Python25\\python.exe\" \"%1\" %*"

これは、私のシステム上で制御する設定であるようです。 上記のレジストリ設定は、python.exe にすべての引数を渡すために "%*" を追加します (これは何らかの理由で私のレジストリに欠けていました)。