如果提供了任何命令行参数,则将Print statment输出重定向到文件

时间:2017-09-15 07:55:39

标签: python python-2.7 argparse argv

我编写了函数,它只具有使用Openstack API从Openstack获取详细信息的功能。我已经在进行日志记录,但是为了快速验证几个网络,我将一对print语句的输出重定向到一个文件。 (看起来像这样),这很好用。

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语句的输出记录到文件中。

任何帮助将不胜感激..!

1 个答案:

答案 0 :(得分:1)

首先重写你的函数,以便它将一个流作为输入:

in[q]

然后让调用者传递打开的文件或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