簡體   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