小编Ant*_*hon的帖子

将YAML文件转换为python dict

我有一个问题,即将YAML文件中的文档映射到dict并正确映射它们.

我有以下YAML文件,它代表一个server(db.yml):

instanceId: i-aaaaaaaa
     environment:us-east
     serverId:someServer
     awsHostname:ip-someip
     serverName:somewebsite.com
     ipAddr:192.168.0.1
     roles:[webserver,php]
Run Code Online (Sandbox Code Playgroud)

我加载这个YAML文件,我可以毫无问题地做,我想我明白了.

instanceId = getInstanceId()
stream = file('db.yml', 'r')
dict = yaml.load_all(stream)

for key in dict:
    if key in dict == "instanceId":
        print key, dict[key]
Run Code Online (Sandbox Code Playgroud)

我希望逻辑像以下一样工作:

  • 加载yaml,映射到dict
  • 查看文档中的每个字典,如果instanceId匹配的是getInstanceId(),则打印出该文档的所有键和值.

如果我从命令行查看地图数据结构,我得到:

{'instanceId': 'i-aaaaaaaa environment:us-east serverId:someServer awsHostname:ip-someip serverName:someserver ipAddr:192.168.0.1 roles:[webserver,php]'}
Run Code Online (Sandbox Code Playgroud)

我想我可能是不正确地为YAML文件创建数据结构,并且在匹配内容时dict,我有点迷失.

旁注:我无法加载此文件中的所有文件yaml.load(),我试过yaml.load_all(),这似乎有用,但我的主要问题仍然存在.

python dictionary yaml data-structures

34
推荐指数
5
解决办法
6万
查看次数

控制argparse帮助参数列表的格式?

import argparse
parser = argparse.ArgumentParser(prog='tool')
args = [('-u', '--upf', 'ref. upf', dict(required='True')),
        ('-s', '--skew', 'ref. skew', {}),
        ('-m', '--model', 'ref. model', {})]
for args1, args2, desc, options in args:  
     parser.add_argument(args1, args2, help=desc, **options)

parser.print_help()
Run Code Online (Sandbox Code Playgroud)

输出:

usage: capcheck [-h] -u UPF [-s SKEW] [-m MODEL]

optional arguments:
  -h, --help            show this help message and exit
  -u UPF, --upf UPF     ref. upf
  -s SKEW, --skew SKEW  ref. skew
  -m MODEL, --model MODEL
                        ref. model
Run Code Online (Sandbox Code Playgroud)

我如何打印参考.-m MODEL, --model MODEL当我使用-h …

python argparse

26
推荐指数
2
解决办法
1万
查看次数

在此上下文中不允许映射值

我是 YAML 格式和 kubernetes 的新手。

下面是一个dep_prom.yml文件。

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    name: prometheus-deployment
  name: prometheus
  #namespace: prometheus
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: prometheus
    spec:
      containers:
      - image: prom/prometheus:master
        name: prometheus
        command:
        - "/bin/prometheus"
        args:
        - "-config.file=/etc/prometheus/prometheus.yml"
        - "-storage.local.path=/prometheus"
        - "-storage.local.retention=24h"
        ports:
        - containerPort: 9090
          protocol: TCP
        volumeMounts:
        - mountPath: "/prometheus"
          name: data
        - mountPath: "/etc/prometheus"
          name: config-volume
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
          limits:
            cpu: 500m
            memory: 2500Mi
      volumes:
      - name: data
        hostPath:
          path: …
Run Code Online (Sandbox Code Playgroud)

yaml kubernetes kubectl

24
推荐指数
6
解决办法
8万
查看次数

ffmpeg 10.04无法找到编解码器参数

我在执行命令时遇到错误 ffmpeg -i /path/to/video.mp4:

  ffmpeg version git-2012-07-24-93342de Copyright (c) 2000-2012 the FFmpeg developers
      built on Jul 24 2012 23:55:41 with gcc 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)
      configuration: --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-swscale --enable-vdpau --enable-version3 --enable-libtheora --enable-libvorbis --enable-libvpx --enable-x11grab
      libavutil      51. 65.100 / 51. 65.100
      libavcodec     54. 44.100 / 54. 44.100
      libavformat    54. 20.100 / 54. 20.100
      libavdevice    54.  2.100 / 54.  2.100
      libavfilter     3.  3.100 /  3.  3.100
      libswscale      2.  1.100 /  2.  1.100
      libswresample   0. 15.100 …
Run Code Online (Sandbox Code Playgroud)

android ffmpeg x264 ubuntu-10.04

22
推荐指数
1
解决办法
3万
查看次数

如何控制PyYAML用于数据的标量形式?

我有一个带有短字符串属性的对象,以及一个长多行字符串属性.我想将短字符串写为YAML引用的标量,将多行字符串写为文字标量:

my_obj.short = "Hello"
my_obj.long = "Line1\nLine2\nLine3"
Run Code Online (Sandbox Code Playgroud)

我希望YAML看起来像这样:

short: "Hello"
long: |
  Line1
  Line2
  Line3
Run Code Online (Sandbox Code Playgroud)

我怎样才能指示PyYAML这样做?如果我调用yaml.dump(my_obj)它,它会产生一个类似dict的输出:

{long: 'line1

    line2

    line3

    ', short: Hello}
Run Code Online (Sandbox Code Playgroud)

(不确定为什么长的是这样的双倍间距...)

我可以指示PyYAML如何对待我的属性吗?我想影响顺序和风格.

python yaml pyyaml

21
推荐指数
5
解决办法
9695
查看次数

Bitbucket管道 - 具有相同步骤的多个分支

是否可以在bitbucket管道中组合多个具有相同步骤的分支?

例如:我工作的团队使用两个名称之一作为他们的评论分支,"rev"或"staging".无论哪种方式,都使用相同的步骤发布到我们的审查服务器.现在,分支被单独调出.

pipelines:
     branches:
          rev:
               steps:
                    - echo 'step'
          staging:
               steps:
                    - echo 'step'
Run Code Online (Sandbox Code Playgroud)

但它可能是这样的

pipelines:
     branches:
          rev|staging:
               steps:
                    - echo 'step'
Run Code Online (Sandbox Code Playgroud)

git yaml bitbucket bitbucket-pipelines

21
推荐指数
3
解决办法
8254
查看次数

保留YAML中的新行

如何格式化这样的YAML文档,以便PyYAML可以正确解析它?

Data: Some data, here and a special character like ':'
      Another line of data on a separate line
Run Code Online (Sandbox Code Playgroud)

我知道':'字符是特殊的所以我必须用引号括起整个东西:

Data: "Some data, here and a special character like ':'
      Another line of data on a separate line"
Run Code Online (Sandbox Code Playgroud)

为了添加新行,我必须添加'\n':

Data: "Some data, here and a special character like ':'\n
      Another line of data on a separate line"
Run Code Online (Sandbox Code Playgroud)

有没有格式化YAML文档,所以我不必添加\n's以便有一个新行?

yaml pyyaml

20
推荐指数
2
解决办法
7910
查看次数

哦-my-zsh配置文件无法加载

我试图让ZSH配置在Mac OSX上正常工作.我用curl安装它:curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh.然后我修改了我的zshrc文件以满足我的需求.它只在我跑完后才有效source ~/.zshrc.但是如果我回来打开新标签或新终端,我必须做的source ~/.zshrc是让配置设置再次运行.有人遇到过这个问题吗?我相信有一种方法可以做到这一点,所以我不需要为~/.zshrc每个新标签做源.

zsh zshrc

20
推荐指数
4
解决办法
2万
查看次数

pkg_resources 作为 API 已被弃用

当我尝试从 .tar.gz 包安装时,同时将警告变为错误:

python -W error -m pip install /some/path/nspace.pkga-0.1.0.tar.gz
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ERROR: Exception:
Traceback (most recent call last):
  File "/opt/util/nspace1/lib/python3.11/site-packages/pip/_internal/cli/base_command.py", line 169, in exc_logging_wrapper
    status = run_func(*args)
             ^^^^^^^^^^^^^^^
  File "/opt/util/nspace1/lib/python3.11/site-packages/pip/_internal/cli/req_command.py", line 248, in wrapper
    return func(self, options, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/util/nspace1/lib/python3.11/site-packages/pip/_internal/commands/install.py", line 324, in run
    session = self.get_default_session(options)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/util/nspace1/lib/python3.11/site-packages/pip/_internal/cli/req_command.py", line 98, in get_default_session
    self._session = self.enter_context(self._build_session(options))
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/util/nspace1/lib/python3.11/site-packages/pip/_internal/cli/req_command.py", line 125, in _build_session
    session = PipSession(
              ^^^^^^^^^^^
  File "/opt/util/nspace1/lib/python3.11/site-packages/pip/_internal/network/session.py", line 342, in __init__
    self.headers["User-Agent"] = user_agent()
                                 ^^^^^^^^^^^^
  File …
Run Code Online (Sandbox Code Playgroud)

python pip setuptools deprecation-warning

20
推荐指数
1
解决办法
5万
查看次数

python yaml.dump坏缩进

我正在执行以下python代码:

import yaml


foo = {
    'name': 'foo',
    'my_list': [{'foo': 'test', 'bar': 'test2'}, {'foo': 'test3', 'bar': 'test4'}],
    'hello': 'world'
}

print(yaml.dump(foo, default_flow_style=False))
Run Code Online (Sandbox Code Playgroud)

但正在打印:

hello: world
my_list:
- bar: test2
  foo: test
- bar: test4
  foo: test3
name: foo
Run Code Online (Sandbox Code Playgroud)

代替:

hello: world
my_list:
  - bar: test2
    foo: test
  - bar: test4
    foo: test3
name: foo
Run Code Online (Sandbox Code Playgroud)

我怎样才能以my_list这种方式缩进元素?

python yaml indentation

19
推荐指数
2
解决办法
8853
查看次数