构建命令行工具来帮助进行Google搜索

2020-08-16 13:32:55

#!/usr/bin/env python3import pathlibimport reimport sysimport urllib.parsefrom contextlib import suppressmacro_re=re.build(r";(?m)^(?P<;name>;\w+):(?P<;replace>;.*)$";)macro_path=pathlib.Path.home()/";Search-google-acro.txt";#此限制可防止递归宏导致#程序进入无限循环。MAX_MACRO_SUBSTIONS=32def main():import argparse parser=argparse.ArgumentParser(PREFIX_CHARS=";:";,description=";";";在Google中搜索术语列表。宏代换看起来像';{宏}';,例如';{gov}鉴别诊断';。如果未给出术语,则打印宏文件的路径。";";";";,)parser.add_argument(";term";,nargs=";*";,help=";)args=parser.parse_args()if len(args.term)==0:打印(宏路径)否则:宏=加载宏(宏路径)查询=";";.JOIN(args.term)WITH SUPPRESS(关键错误):FOR_IN Range(MAX_MACRO_SUBSTIONS):QUERY=query.format_map(宏)URL=";https://www.google.com/search?q=";url+=urllib.parse.QUOTE_PLUS(查询)打印(URL)定义LOAD_MACKS(路径):";";";从文件加载宏。如果该文件不存在,则返回空字典。Path--pathlib.Path。宏文件。";";";";如果不是path.is_file():返回{}否则:返回{Match[";Name";].strie():匹配宏_re.finditer(path.read_text())}if__name__==";__main__";:main()