繁体   English   中英

Pipe bash 到特定的 python 标志

[英]Pipe bash to a specific python flag

我正在 python 中编写一个程序来搜索 my.bib 文件中的 LaTeX 并带有几个标志。 为此,我将argparse package 用于 python。

parser = argparse.ArgumentParser(description=description_string, usage=usage_string, add_help=True)
parser.add_argument("-f", "--file", type=str, help=file_help_text)
parser.add_argument("-s", "--signifier", type=str, action='append',help=signifier_help_text)
parser.add_argument("-a", "--attribute", type=str, help=attribute_help_text)
parser.add_argument("-q", "--query", type=str, help=query_help_text)
args = parser.parse_args()

由于我希望能够在终端中使用该程序,希望能够将pipe信息从其他进程传递到脚本中。 具体来说,我希望通过管道传输到脚本的任何字符串都用作我脚本的 -q / --query 选项的输入。

我已经阅读了以下问题,但它并没有解决我的问题: Bash pipe to python

如何控制管道字符串 go 的输入标志? 有 package 吗? 如果我可以将 pip 放入其中,那真的会让我的脚本更有用。

您可以让argparsesys.argv以外的其他地方获取输入。 也许首先检查是否有标准输入。 如果没有,请准备参数列表arglist等于sys.argv或其有用部分。 如果是,则将其sys.argv ,并附加从标准输入读取的 1 行。

import sys

arglist = sys.argv[1:]
if not sys.stdin.isatty():
    query = sys.stdin.read(1)
    arglist.append(query) #or perhaps "--query "+query

最后,像往常一样解析它,但使用arglist作为参数:

args = parser.parse_args(arglist)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM