一个非Python程序将调用一个Python程序,并带有输入和输出参数。在非Python程序中,输入可以是文件引用或重定向到stdin的字符串。输出可以是文件或stdout。
argparse.FileType似乎已经准备好处理这个问题,因为它已经有了特殊的“-”来指导到stdin/stdout。实际上,使用“-”来指导到stdout是可以的,但我不知道stdin的实现/语法是什么。
非Python代码中的示例调用: python mycode.py - output.txt python mycode.py - -
在此之后,非Python代码会做什么?输出一个输入字符串吗? 而Python代码在此之后会做什么?
我将始终需要区分双方参数的去向(即输入和输出),因此在add_argument中使用default="-"或default=sys.stdin将无法正常工作,因为它们需要缺失的参数。
以下是我到目前为止所拥有的:
argparse.FileType似乎已经准备好处理这个问题,因为它已经有了特殊的“-”来指导到stdin/stdout。实际上,使用“-”来指导到stdout是可以的,但我不知道stdin的实现/语法是什么。
非Python代码中的示例调用: python mycode.py - output.txt python mycode.py - -
在此之后,非Python代码会做什么?输出一个输入字符串吗? 而Python代码在此之后会做什么?
我将始终需要区分双方参数的去向(即输入和输出),因此在add_argument中使用default="-"或default=sys.stdin将无法正常工作,因为它们需要缺失的参数。
以下是我到目前为止所拥有的:
parser = argparse.ArgumentParser()
parser.add_argument('read_fref', type=argparse.FileType('r'))
parser.add_argument('write_fref', type=argparse.FileType('w'))
parser_ns = parser.parse_args()
with parser_ns.read_fref as f_r:
read_f = json.load(f_r)
output = {'k': 'v'}
with parser_ns.write_fref as f_w:
json.dump(output, f_w)
argparse
参数是可选的,即非必需的,则default
起作用。 - hpauljtest.json
文件中获取输入。对你原来的代码进行变化,可以用于输出python mycode.py -w output.txt
。我不记得 Windows 的cmd
是否像bash
一样具有<
,>
重定向功能。 - hpauljtest.py -r - -w - <in.txt
,以及读取标准输入并写入文件:test.py -r - -w out.txt <in.txt
。感谢您的时间! - Eric S