VSコード内でpythonファイルを引数付きで実行する簡単な方法はありますか?
args
キーワードを使用してlaunch.json
ファイルにカスタム構成を追加できることはわかっています。ただし、さまざまな引数を使用したいという理由だけでlaunch.json
を毎回変更するのは面倒です。
回避策は、スクリプトにコマンドライン引数を要求させることです(内部VSCodeコンソールで)。
readline を使用すると、これをはるかに使いやすくすることができます。これにより、上矢印キーを押して前のコマンド(コマンド履歴)を順に切り替えるなどの操作を実行できます。例:
import argparse, readline
def main():
# ask for additional command line arguments if needed (for VSCode)
parser = argparse.ArgumentParser()
parser.add_argument('--interactive', action='store_true', default=False)
(args, rest) = parser.parse_known_args()
if args.interactive:
try: readline.read_history_file()
except: pass
rest += input("Arguments: ").split(" ") # get input args
try: readline.write_history_file()
except: pass
# your other script arguments go here
parser.add_argument("-output-dir", default="/out")
# ...
args = parser.parse_args(rest)
print(args)
if __name__ == "__main__":
main()
次に、常に--interactive
引数を渡すようにVSCodeを設定します。ブレークポイントを設定しても、スクリプトは常に(履歴付きの)引数を要求します。
これを行うには、カスタムタスクを追加できます。これはtasks.json
を扱います。プロジェクトのデフォルトのtasks.jsonファイル(プロジェクトフォルダー)を追加できます。次の手順を実行します。キーボードを押す Ctrl+Shift+B 次のポップアップを表示します
Configure Build Task
をクリックします。次の場所に作成されたカスタムtasks.jsonがある場合は.vscode/tasks.json
エディターが開きます。そうでない場合は、既存のタスクランナーの候補がドロップダウンで表示されます。
私たちの意図は、プロジェクトのカスタムtasks.jsonを作成して、ドロップダウンからOthers
オプションを選択する必要があるものを作成することです。以下のスクリーンショットを確認してください。
Others
オプションを選択すると、デフォルトのtasks.json
がプロジェクトのルートディレクトリから次の場所に作成されます.vscode/tasks.json
以下は、tasks.jsonの例です
pythonをサポートするようにtasks.json
を編集します。
"echo"
から"Python"
に変更します"Always"
のままにします["Hello World"]
から["${file}"]
(ファイル名)に変更します最後のプロパティを削除problemMatcher
IsShellCommandとバージョンプロパティを変更せずに維持する
変更を保存します
これでpyファイルを開いて、ショートカットを使ってうまく実行できます Ctrl+Shift+B。
プロジェクトにtask.jsonファイルがない場合は、Ctrl + Shift + Bを押して新しいファイルを作成し、表示されている最初のオプションを選択して、それらすべてを以下に置き換えます。
{
// See https://go.Microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "run python with argument",
"type": "Shell",
"command": "python PROGRAM_NAME.py ARG1 ARG2 ...",
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
それ以外の場合は、既存のtasks.jsonに上記の構成を追加します。
上記の構成のPROGRAM_NAMEをプログラム名に置き換え、ARG1 ARG2 ...は特定の引数を示します。
結局、CTRL + SHIFT + Bで作成したタスクを実行し、新しい「run python with argument)」タスクを選択できます。
仮想環境を使用している場合は、環境のpythonへの絶対パスを使用してください。