标签: pyyaml

为什么会出现致命错误:安装PyYAML时找不到'yaml.h'文件?

我正在尝试下载PyYAML并按照此处的说明进行安装http://pyyaml.org/wiki/PyYAML

所以我下载了ZIP包:http://pyyaml.org/download/pyyaml/PyYAML-3.11.zip然后cd进入该文件夹并运行python setup.py --with-libyaml install,我得到的错误信息是ext/_yaml.h:2:10: fatal error: 'yaml.h' file not found

但我检查了PyYAML-3.11文件夹,yaml.h就在那里......

更新:我在http://sandlininc.com/?p=500尝试了这些方法

$ sudo easy_install pip
$ brew install libyaml
$ sudo easy_install setuptools
$ pip install -U PyYAML

然后我python setup.py --with-libyaml install再试一次.我收到消息错误:/ Library /Python/2.7/site-packages/_yaml.so:权限被拒绝

我错过了什么吗?为什么许可被拒绝?谢谢!

python parsing yaml pyyaml

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

解析YAML,返回行号

我正在使用YAML数据生成文档生成器,该数据将指定生成每个项目的YAML文件的哪一行.做这个的最好方式是什么?所以,如果YAML文件是这样的:

- key1: item 1
  key2: item 2
- key1: another item 1
  key2: another item 2
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西:

[
     {'__line__': 1, 'key1': 'item 1', 'key2': 'item 2'},
     {'__line__': 3, 'key1': 'another item 1', 'key2': 'another item 2'},
]
Run Code Online (Sandbox Code Playgroud)

我目前正在使用PyYAML,但是如果我可以从Python中使用它,那么任何其他库都可以.

python parsing yaml pyyaml

17
推荐指数
4
解决办法
3438
查看次数

如何使用python更新yaml文件

我有一个some.yaml包含以下内容的文件.

    init_config: {}
    instances:
        - host: <IP>
          username: <username>
          password: <password>
Run Code Online (Sandbox Code Playgroud)

应该如下解析和更新yaml文件.

    init_config: {}
    instances:
        - host: 1.2.3.4
          username: Username
          password: Password
Run Code Online (Sandbox Code Playgroud)

如何解析值并适当更新它们?

python pyyaml

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

使用PyYaml为YAML添加注释

我正在使用PyYaml从我自己的python对象创建Yaml文档.例如我的对象:

class MyObj(object):
    name = "boby"
    age = 34
Run Code Online (Sandbox Code Playgroud)

变为:

boby:
   age: 34
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.

但我还没有找到一种方法以编程方式向生成的yaml添加注释,因此它看起来像:

boby:       # this is the name
   age: 34  # in years
Run Code Online (Sandbox Code Playgroud)

看看PyYaml文档以及代码,我发现没办法这样做.

有什么建议?

python yaml pyyaml

16
推荐指数
1
解决办法
3043
查看次数

在所有节点完成加载后,有没有办法使用PyYAML construct_mapping构造对象?

我试图在python中创建一个yaml序列,创建一个自定义的python对象.该对象需要使用之后解构的dicts和列表构建__init__.但是,似乎construct_mapping函数不构造嵌入序列(列表)和dicts的整个树.
考虑以下:

import yaml

class Foo(object):
    def __init__(self, s, l=None, d=None):
        self.s = s
        self.l = l
        self.d = d

def foo_constructor(loader, node):
    values = loader.construct_mapping(node)
    s = values["s"]
    d = values["d"]
    l = values["l"]
    return Foo(s, d, l)
yaml.add_constructor(u'!Foo', foo_constructor)

f = yaml.load('''
--- !Foo
s: 1
l: [1, 2]
d: {try: this}''')

print(f)
# prints: 'Foo(1, {'try': 'this'}, [1, 2])'
Run Code Online (Sandbox Code Playgroud)

这工作得很好,因为f持有的引用ld对象,这实际上是充满了数据之后Foo对象被创建.

现在,让我们做一些更复杂的smidgen:

class Foo(object):
    def __init__(self, …
Run Code Online (Sandbox Code Playgroud)

python yaml pyyaml

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

在PyYaml中转储为utf-8

我正在尝试加载一堆utf-8编码的字符串并使用PyYaml再次转储它们.这是加载/转储的代码:

lang_yml = yaml.load(codecs.open(lang + ".yml.old", "r", "utf-8"))
test_file_path = lang + '.yml'
stream = file(test_file_path, 'w')
yaml.dump(lang_yml, stream,  default_flow_style=False, encoding=('utf-8'))
Run Code Online (Sandbox Code Playgroud)

但是以"恩到达"开头的字符串最终被保存为"恩到达\ xE8re".我究竟做错了什么?

python utf-8 pyyaml

15
推荐指数
1
解决办法
7009
查看次数

在YAML中执行算术运算?

有时候我必须在配置文件中指定时间(以秒为单位),并且编写精确的秒数非常烦人 - 相反,我想执行算术,所以我可以使用:

some_time: 1 * 24 * 60 * 60
Run Code Online (Sandbox Code Playgroud)

而不是确切的:

some_time: 86400
Run Code Online (Sandbox Code Playgroud)

不幸的是,在使用这一行时:some_time: 1 * 24 * 60 * 60它会将该配置行视为字符串.当然,我可以使用 - eval(config['some_time'])但我很想知道是否可以在YAML中执行算术运算?

python math yaml pyyaml

15
推荐指数
2
解决办法
7402
查看次数

Python和PYAML - yaml.scanner.ScannerError:此处不允许使用映射值

我在使用python 2.7的ubunty 64并使用PyYAML-3.10

下面是我的yaml文件:

host:localhost
username:root
password:test
database:test
operations_database:operations
treeroot:
    branch1:
        name: Node 1
        branch1-1:
            name: Node 1-1
    branch2:
        name: Node 2
        branch2-1:
            name: Node 2-1
Run Code Online (Sandbox Code Playgroud)

当我运行以下代码时,我得到以下错误.但是,如果我删除treeroot上方的行,则代码可以正常工作:

from yaml import load, dump
try:
    from yaml import CLoader as Loader, CDumper as Dumper
except ImportError:
    from yaml import Loader, Dumper
f=open('amazon.yaml')  
data = load(f, Loader=Loader) 

Traceback (most recent call last):
  File "/home/ubuntu/workspace/Amazon-Products-Crawler-1/config_files/test_yaml.py", line 10, in <module>
    data = load(f, Loader=Loader) 
  File "/usr/local/lib/python2.7/dist-packages/yaml/__init__.py", line 71, in load
    return loader.get_single_data()
  File "/usr/local/lib/python2.7/dist-packages/yaml/constructor.py", line …
Run Code Online (Sandbox Code Playgroud)

python yaml pyyaml

14
推荐指数
4
解决办法
3万
查看次数

如何使用PyYAML读取python元组?

我有以下YAML文件命名input.yaml:

cities:
  1: [0,0]
  2: [4,0]
  3: [0,4]
  4: [4,4]
  5: [2,2]
  6: [6,2]
highways:
  - [1,2]
  - [1,3]
  - [1,5]
  - [2,4]
  - [3,4]
  - [5,4]
start: 1
end: 4
Run Code Online (Sandbox Code Playgroud)

我正在使用PyYAML加载它并打印结果如下:

import yaml

f = open("input.yaml", "r")
data = yaml.load(f)
f.close()

print(data)
Run Code Online (Sandbox Code Playgroud)

结果是以下数据结构:

{ 'cities': { 1: [0, 0]
            , 2: [4, 0]
            , 3: [0, 4]
            , 4: [4, 4]
            , 5: [2, 2]
            , 6: [6, 2]
            }
, 'highways': [ [1, 2]
              , [1, …
Run Code Online (Sandbox Code Playgroud)

python yaml pyyaml

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

与pyyaml相当的输出

我有一个python项目,我想使用YAML(pyYaml 3.11),特别是因为它"非常"且用户可以在必要时在文本编辑器中轻松编辑.但问题是,如果我将YAML带入python应用程序(我将需要)并编辑内容(因为我需要),那么编写新文档通常不如我开始时那么漂亮.

pyyaml文档非常差 - 甚至没有将参数记录到转储函数.我找到了http://dpinte.wordpress.com/2008/10/31/pyaml-dump-option/.但是,我仍然缺少我需要的信息.(我开始查看源代码,但它似乎并不是最吸引人的.如果我没有得到解决方案,那么这是我唯一的办法.)

我从一个看起来像这样的文档开始:

- color green :
     inputs :
        - port thing :
            widget-hint : filename
            widget-help : Select a filename
        - port target_path : 
            widget-hint : path
            value : 'thing' 
     outputs:
        - port value:
             widget-hint : string
     text : |
            I'm lost and I'm found
            and I'm hungry like the wolf.

加载到python(yaml.safe_load(s))后,我尝试了几种方法将其转储出来:

>>> print yaml.dump( d3, default_flow_style=False, default_style='' )
- color green:
    inputs:
    - port thing:
        widget-help: Select a filename
        widget-hint: filename
    - port target_path: …

python yaml pretty-print pyyaml

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

标签 统计

python ×10

pyyaml ×10

yaml ×8

parsing ×2

math ×1

pretty-print ×1

utf-8 ×1