如果提供了任何命令行参数,则将 Print 语句输出重定向到文件
Redirect Print statment output to file if any command line argument is provided
我写了函数,它只有使用 Openstack 从 Openstack 获取详细信息的功能 API。我已经在进行日志记录,但是为了快速验证少数网络,我将几个打印语句的输出重定向到一个文件。 (看起来像这样),而且效果很好。
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 语句的输出记录到文件中。
任何帮助将不胜感激..!
首先重写您的函数,使其将流作为输入:
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
- 取决于命令行标志 - 作为参数。
def main(...):
# argparse stuff here
if someflag:
outstream = open(path/to/file, "w")
else:
outstream = sys.stdout
try:
get_net_details(outstream)
finally:
if someflag:
outstream.close()
我写了函数,它只有使用 Openstack 从 Openstack 获取详细信息的功能 API。我已经在进行日志记录,但是为了快速验证少数网络,我将几个打印语句的输出重定向到一个文件。 (看起来像这样),而且效果很好。
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 语句的输出记录到文件中。
任何帮助将不胜感激..!
首先重写您的函数,使其将流作为输入:
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
- 取决于命令行标志 - 作为参数。
def main(...):
# argparse stuff here
if someflag:
outstream = open(path/to/file, "w")
else:
outstream = sys.stdout
try:
get_net_details(outstream)
finally:
if someflag:
outstream.close()