0
Openstack APIを使用してOpenstackから詳細を取得する機能しかありません。私はすでにロギングを行っていますが、いくつかのネットワークを素早く検証するために、printステートメントの出力をファイルにリダイレクトしています。 (これはこのように見えます)、これは正常に動作します。リダイレクトコマンドライン引数が指定されている場合、statment出力をファイルに出力します。
def get_net_details():
...
filename = open('validation.txt', 'a')
network_name = network['name']
print >> filename, 'Network Name : {0}'.format(network_name)
network_id = subnet_detail['subnet']['network_id']
print >> filename, 'Network ID : {0}'.format(network_id)
network_type = network['provider:network_type']
print >> filename, 'Network Type : {0}'.format(network_type)
print >> "========================================="
filename.close()
問題は、私は、ユーザーがスクリプトの実行時に任意のコマンドライン入力(argparseを経由して任意のスイッチまたはその他の方法)を提供する場合にのみ、ファイルにprint文の出力を記録したい、です。
お手数ですが..! - コマンドラインフラグに依存 - のparamとして
def get_net_details(outstream):
...
network_name = network['name']
print >> outstream, 'Network Name : {0}'.format(network_name)
network_id = subnet_detail['subnet']['network_id']
print >> outstream, 'Network ID : {0}'.format(network_id)
network_type = network['provider:network_type']
print >> outstream, 'Network Type : {0}'.format(network_type)
print >> outream, "========================================="
その後、呼び出し側が開いたファイルまたはsys.stdout
のいずれかを通過させる:それは、入力としてストリームをとるように
sys.argvの長さを確認し、入力がある場合はリダイレクトを行います。 – Deepaklal
getoptモジュールも試してみてください。コマンドライン引数を扱う標準的な方法があります – Deepaklal