質問: ### コマンドプロンプトについて質問です。 使用環境 windwos 10 Python 3.6 Pythonファイルをterminalで起動しなさいと指示されました。 私はwindowsを使っているのでコマンドプロンプトで起動しようと思うのですが、 コマンドプロンプト 上でpythonと入力すると Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. という文章が表示されます。 環境変数のPATHを調べてみるとC:\Users\Yuki\AppData\Local\Programs\Python\Python36\ と指定されているのでPython36内にあるPython.exeというフォイルを起動していることは理解しています。 Python.exeを起動することにより、コマンドプロンプト上では何が起きているでしょうか? "C:\Users\Yuki>"という表示は消え、動いたはずの"cd","dir","ipconfig"など全てのコマンドが使用できなくなっています。 代わりにコードを打ち、Enterを押すとすぐに結果が出る画面になります。 例えば、デスクトップ上にruler.py というファイルがあるとします。 コマンドプロンプト上でcdコマンドを使い、ruler.py ファイルがあるディレクトリへ移動して、 ruler.pyと入力するとその結果が表示されます。 では、コマンドプロンプトでpython.exeを起動後の画面で、パイソンファイルを起動するにはどうすればいいんでしょうか? [質問点]そもそも、python.exeという起動ファイルはどのような役割があるのですか? 回答よろしくお願いします。
回答: > > やはり、REPL の機能しか使えないのですが、なぜでしょうか? > > > そのとおり、pythonとだけで起動するとREPLモードで起動します。以降は、終了するまでコマンドプロンプトのコマンドは受け付けません。 > > 3~6のようにファイル名を並べるコマンドはどのように処理されているのでしょうか? > > > 1つ目が起動するプログラムファイルで、2つ目以降が引数(argument)です。引数をどう解釈するかは1つ目に書いたプログラムの仕様次第です。pythonの場合に引数がどういう意味を持つかは`python --help`で見てください。 > > もしそうなれば、なぜ1,2は起動するのですか? > > > Windowsの場合、 コマンドプロンプトで、`assoc .py` や `ftype Python.File` で表示される情報(実際にはレジストリの中)に従って、exeファイルが起動されます。 手元の環境だと、`Python.File="C:\Windows\py.exe" "%L" %*`となっています。 `%L`は、元のファイル名に、%* は残りの引数に置き換わりますので、`hello.py`と打つと`"C:\Windows\py.exe" "hello.py"`が実行されます。