gpt4 book ai didi

python - 将所有内容从 argparse 重定向到套接字连接,但通常不重定向到 stdout

转载 作者:行者123 更新时间:2023-12-03 11:50:26 24 4
gpt4 key购买 nike

我正在尝试弄清楚如何重定向/捕获(在字符串中)从 argparse.parse_args() 到 upd-socket(服务器)的所有输出,而不是一般从 stdout 输出。

例如运行这段代码时:

import argparse

parser = argparse.ArgumentParser(prog='PROG')

parser.add_argument('-x', nargs=2)

parser.add_argument('--foo', nargs=2, metavar=('bar', 'baz'))

args = parser.parse_args('-x p g -h'.split())

最佳答案

对于 Python 3.4+,您可以使用 redirect_stdout from contextlib

这是一个演示这种捕获/重定向的示例程序

#!/usr/bin/env python3
import argparse
import io
from contextlib import redirect_stdout


def argparser(args_external=None):
parser = argparse.ArgumentParser(description="an example program")
parser.add_argument(
"-v", "--verbose", action="store_true",
help="Enable verbose output")
arguments = parser.parse_args(args_external) # None -> sys.argv

# this string goes to stdout, but is captured by redirect_stdout
print("verbose=={}".format(arguments.verbose))

return arguments


def main():
f = io.StringIO()
with redirect_stdout(f):
argparser()
s = f.getvalue()

print("this statement occurs after the argparser runs")
print("string contents from argparser: {}".format(s))


if __name__ == "__main__":
main()

输出

% python3 example.py -v
this statement occurs after the argparser runs
string contents from argparser: verbose==True

此外,如果您想多次调用 argparser,ArgumentParser().parse_args() 将接受一个列表(默认为 sys.argv)

关于python - 将所有内容从 argparse 重定向到套接字连接,但通常不重定向到 stdout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48640001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com