Views: 70
macOS CatalinaでVS Codeを使用してPython開発
GitHub環境のサブディレクトリを追加したワークスペースを新規作成。GitHub環境の下のディレクトリで開発していたが、VS Codeの解釈するディレクトリ構造とPythonの認識する相対パスがずれているので、Python開発用のワークスペースを新規に定義した。
デバッグ環境は、標準提供されているものを使用した。
コマンドラインで実行するプログラムをデバッグする際に、 .vscode/launch.jsonに”args”の指定を追加した。
デバッグについては、VS Code Debugging及びVS Code launch configurations参照
{ // IntelliSense を使用して利用可能な属性を学べます。 // 既存の属性の説明をホバーして表示します。 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "args": ["data/in/ubl-tc434-example8.xml", "data/out/ubl-tc434-example8.tsv"] // invoice2tsv // "args": ["data/out/ubl-tc434-example6.tsv", "data/out/ubl-tc434-example6.xml"] // genInvoice } ] }
この指定で、[実行]メニューからコマンドラインで引数を指定したデバッグが可能となった。
引数から入出力のファイルパスを取得する
file_path関数を定義してファイルパスを取得して、os.path.isfile()で入力ファイルの存在チェックしている。ファイルがなければ、 sys.exit()で処理を中断。
# Create the parser import sys import os import argparse def file_path(pathname): if "/" == pathname[0:1]: return pathname else: dir = os.path.dirname(__file__) new_path = os.path.join(dir, pathname) return new_path my_parser = argparse.ArgumentParser(prog='genInvoice', usage='%(prog)s [options] infile outfile', description='ファイル変換') # Add the arguments my_parser.add_argument('inFile', metavar='infile', type=str, help='入力ファイル') my_parser.add_argument('outFile', metavar='outfile', type=str, help='出力ファイル') args = my_parser.parse_args() in_file = file_path(args.inFile) out_file = file_path(args.outFile) # Check if infile exists if not os.path.isfile(in_file): print('入力ファイルがありません') sys.exit()