命令行中可扩展的数据结构遍历

lens-cli的Python项目详细描述


镜头

lens是一个易于遍历和 从终端打印数据结构。 它是可扩展的。

使用伟大的Pygments库。

它应该在Python2和3上都能工作,但是它是被开发出来的 记住了python 3。

安装

包尚未注册到pypi。也就是说你应该 可以用pip安装它。lens已经被拿走了,所以 我们用了lens-cli

pip install lens-cli

用法

呼叫lens -h将打印此消息:

usage: lens [-h] [--input INPUT] [--format FORMAT]
            [--no-highlight NO_HIGHLIGHT]
            [key [key ...]]

Extensible data structure traversal from the command line

positional arguments:
  key                   the keys to traverse

optional arguments:
  -h, --help            show this help message and exit
  --input INPUT, -i INPUT
                        the input file (defaults to the standard input)
  --format FORMAT, -f FORMAT
                        the data format to consume (defaults to json)
  --no-highlight NO_HIGHLIGHT, -n NO_HIGHLIGHT
                        prevent syntax highlighting

这应该相对简单。让我们看几个例子:

# just calling lens will print everything, syntax-highlighted
$ curl -s https://httpbin.org/get | lens
{"args": {}, 
  "headers": {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 
    "Accept-Encoding": "gzip, deflate, br", 
    "Accept-Language": "de,en-US;q=0.7,en;q=0.3", 
    "Dnt": "1", 
    "Host": "httpbin.org", 
    "Referer": "https://httpbin.org/", 
    "Upgrade-Insecure-Requests": "1", 
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:50.0) Gecko/20100101 Firefox/50.0"}, 
  "origin": "213.61.134.12", 
  "url": "https://httpbin.org/get"}# suppose we only want to see the "Host" header
$ curl -s https://httpbin.org/get | lens header Host
"httpbin.org"# or use xml
$ curl -s https://httpbin.org/xml | lens -f=xml
<slideshow 
    title="Sample Slide Show"date="Date of publication"author="Yours Truly"
    >
    <slide type="all">
      <title>Wake up to WonderWidgets!</title>
    </slide>
    <slide type="all">
        <title>Overview</title>
        <item>Why <em>WonderWidgets</em> are great</item>
        <item/>
        <item>Who <em>buys</em> WonderWidgets</item>
    </slide>
</slideshow>

# suppose we want to only get the title of the second slide
$ curl -s https://httpbin.org/xml | lens -f=xml slide 1 title
<title>Overview</title>

我们还可以通过提供-i选项来读取文件。 lens还发现其输出是否重定向到文件,在这种情况下 不会应用语法突出显示(可以通过 选项)。

延伸

您可以编写自己的解析器/遍历器-无可否认,解析器 不是个好名字,但现在我们还是坚持。

它们应该继承自LensParser中的lens.parsers.base, 至少实现方法treat(self, inpt, keys), 其中,inpt是输入字符串,keys是 穿越。它应该以 弦。

或者,解析器可以通过公开 静态属性lexer,如果突出显示适用。IT 不过,不用它也行。

插件可以是第三方pip模块,在这种情况下 应遵循命名方案lens-{format-name},并导出 名为Parser的解析器。

插件的示例可以在 bson分析器存储库。

你只需要知道这些!


玩得开心!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将字符串拆分为带关键字的部分   删除数据库后未指定java数据源问题“url”属性   网络化java多人游戏连接   Java当新字符串等于旧字符串时,为什么substring()不创建新对象?   一个实例到多个bean的java注入   JavaSpringMVC验证错误消息   java总结if语句,并从另一个对象(如字符串[])读取if条件(动态if)   需要多个输入的Java IF语句   jsf如何选择正确的bean范围?   java将数据库值加载到组合框JSP,Hibernate   一次活动中的java 3布局   团队和球员反对Java的困难   java ActionListener如何知道按下了哪个按钮?