問題点
Python2.7 on Windowsの環境で、
たとえば以下のようなtest.pyがあったとして
import sys
print(len(sys.argv))
引数付きでコマンドプロンプトから実行してもsys.argvが常に1になってしまう。
> test.py a b c
1 // <= NG: 本来は4であるべき
なおpythonコマンドから実行すると問題ない。
> python test.py a b c
4 // <= OK
対処方法
https://bugs.python.org/issue7936 にissueとして上がっていた。
結論としてはレジストリーをいじる。
regeditを立ち上げて、 HKEY_CURRENT_USER\Software\Classes\Applications\python.exe\shell\open\command
に移動
この値が"C:\Python27\python.exe" "%1"
になっている場合は、"C:\Python27\python.exe" "%1" %*
に修正する。
これで正しくsys.argvが渡されるようになるはず。
> test.py a b c
4 // OK
それにしても6年前に報告されたバグなので、さすがに修正されててほしかった。