相关疑难解决方法(0)

在Python中解析YAML文件并访问数据?

我是YAML的新手,一直在寻找解析YAML文件和使用/访问解析后的YAML数据的方法.

我遇到了关于如何解析YAML文件的解释,例如,PyYAML 教程," 我如何在Python中解析YAML文件 "," 将Python dict转换为对象? ",但我没有找到的是关于如何从解析的YAML文件访问数据的简单示例.

假设我有一个YAML文件,例如:

 treeroot:
     branch1: branch1 text
     branch2: branch2 text
Run Code Online (Sandbox Code Playgroud)

如何访问"branch1 text"文本?

" YAML解析和Python? "提供了一个解决方案,但是我在从更复杂的YAML文件访问数据时遇到了问题.而且,我想知道是否有一些标准的方法从解析的YAML文件访问数据,可能类似于" 树迭代 "或" 元素路径 "符号或解析XML文件时将使用的东西?

python xml parsing yaml

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

类型错误:load() 缺少 1 个必需的位置参数:Google Colab 中的“Loader”

我正在尝试在 Google Colab 中进行常规导入。
此导入一直有效。
如果我尝试:

import plotly.express as px
Run Code Online (Sandbox Code Playgroud)

或者

import pingouin as pg
Run Code Online (Sandbox Code Playgroud)

我收到错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-19-86e89bd44552> in <module>()
----> 1 import plotly.express as px

9 frames
/usr/local/lib/python3.7/dist-packages/plotly/express/__init__.py in <module>()
     13     )
     14 
---> 15 from ._imshow import imshow
     16 from ._chart_types import (  # noqa: F401
     17     scatter,

/usr/local/lib/python3.7/dist-packages/plotly/express/_imshow.py in <module>()
      9 
     10 try:
---> 11     import xarray
     12 
     13     xarray_imported = True

/usr/local/lib/python3.7/dist-packages/xarray/__init__.py in <module>()
      1 import pkg_resources
      2 
----> 3 …
Run Code Online (Sandbox Code Playgroud)

python typeerror pyyaml plotly google-colaboratory

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

使用Python读取YAML文件导致yaml.composer.ComposerError:期望流中的单个文档

我有一个看起来像的yaml文件

---
level_1: "test"
level_2: 'NetApp, SOFS, ZFS Creation'
request: 341570
---
level_1: "test"
level_2: 'NetApp, SOFS, ZFS Creation'
request: 341569
---
level_1: "test"
level_2: 'NetApp, SOFS, ZFS Creation'
request: 341568
Run Code Online (Sandbox Code Playgroud)

我可以使用YAML在Perl中正确读取此内容,但在使用YAML的python中无法正确读取.它失败并出现错误:

期望流中的单个文档

程序:

import yaml

stram = open("test", "r")
print yaml.load(stram)
Run Code Online (Sandbox Code Playgroud)

错误:

Traceback (most recent call last):
  File "abcd", line 4, in <module>
    print yaml.load(stram)
  File "/usr/local/pkgs/python-2.6.5/lib/python2.6/site-packages/yaml/__init__.py", line 58, in load
    return loader.get_single_data()
  File "/usr/local/pkgs/python-2.6.5/lib/python2.6/site-packages/yaml/constructor.py", line 42, in get_single_data
    node = self.get_single_node()
  File "/usr/local/pkgs/python-2.6.5/lib/python2.6/site-packages/yaml/composer.py", line 43, in get_single_node
    event.start_mark) …
Run Code Online (Sandbox Code Playgroud)

python yaml pyyaml

57
推荐指数
1
解决办法
8万
查看次数

如何在Python中读取HDF5文件

我试图从Python中读取hdf5文件中的数据.我可以使用读取hdf5文件h5py,但我无法弄清楚如何访问文件中的数据.

我的代码

import h5py    
import numpy as np    
f1 = h5py.File(file_name,'r+')    
Run Code Online (Sandbox Code Playgroud)

这有效,文件被读取.但是如何访问文件对象中的数据f1呢?

python hdf5

57
推荐指数
6
解决办法
16万
查看次数

PyYAML转储格式

我知道在SO上有一些关于这个的问题,但我找不到我想要的东西.

我正在使用pyyaml来读取(.load()).yml文件,修改或添加一个键,然后.dump()再次写入它.问题是我想在转储后保留文件格式,但它会改变.

例如,我编辑键en.test.index.few"Bye",而不是"Hello"

蟒蛇:

with open(path, 'r', encoding = "utf-8") as yaml_file:
    self.dict = pyyaml.load(yaml_file)
Run Code Online (Sandbox Code Playgroud)

然后,更改密钥:

with open(path, 'w', encoding = "utf-8") as yaml_file:
    dump = pyyaml.dump(self.dict, default_flow_style = False, allow_unicode = True, encoding = None)
    yaml_file.write( dump )
Run Code Online (Sandbox Code Playgroud)

YAML:

之前:

en:
  test:
    new: "Bye"
    index:
      few: "Hello"
  anothertest: "Something"
Run Code Online (Sandbox Code Playgroud)

后:

en:
  anothertest: Something
  test:
    index:
      few: Hello
    new: Bye
Run Code Online (Sandbox Code Playgroud)

有没有办法保持相同的格式?,例如qoutes和order.我使用了错误的工具吗?

我知道也许原始文件不完全正确,但我无法控制它(这是一个Ruby on Rails i18n文件).

非常感谢你.

python quotes yaml pyyaml python-3.x

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

如何使用Python读写CSV文件?

我有一个example.csv包含内容的文件

1,"A towel,",1.0
42," it says, ",2.0
1337,is about the most ,-1
0,massively useful thing ,123
-2,an interstellar hitchhiker can have.,3
Run Code Online (Sandbox Code Playgroud)

我如何example.csv用Python 阅读?

同样,如果我有

data = [(1, "A towel,", 1.0),
        (42, " it says, ", 2.0),
        (1337, "is about the most ", -1),
        (0, "massively useful thing ", 123),
        (-2, "an interstellar hitchhiker can have.", 3)]
Run Code Online (Sandbox Code Playgroud)

如何data使用Python 写入CSV文件?

python csv

33
推荐指数
1
解决办法
4万
查看次数

我为什么要在Python中关闭文件?

通常当我打开文件时,我从不调用该close()方法,没有任何不好的事情发生.但我被告知这是不好的做法.这是为什么?

python

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

为什么PyYAML在解析YAML文件时花了这么多时间?

我使用以下格式解析大约6500行的YAML文件:

foo1:
  bar1:
    blah: { name: "john", age: 123 }
  metadata: { whatever1: "whatever", whatever2: "whatever" }
  stuff:
    thing1: 
      bluh1: { name: "Doe1", age: 123 }
      bluh2: { name: "Doe2", age: 123 }
    thing2:
    ...
    thingN:
foo2:
...
fooN:
Run Code Online (Sandbox Code Playgroud)

我只想用PyYAML库解析它(我认为在Python中没有其他替代方法:我如何在Python中解析YAML文件).

只是为了测试,我编写代码来解析我的文件:

import yaml

config_file = "/path/to/file.yaml"

stream = open(config_file, "r")
sensors = yaml.load(stream)
Run Code Online (Sandbox Code Playgroud)

使用time命令执行脚本以及我这次得到的脚本:

real    0m3.906s
user    0m3.672s
sys     0m0.100s
Run Code Online (Sandbox Code Playgroud)

那些价值看起来并不太好.我只想用JSON测试相同的内容,只需将相同的YAML文件转换为JSON:

import json

config_file = "/path/to/file.json"

stream = open(config_file, "r")
sensors = …
Run Code Online (Sandbox Code Playgroud)

python json yaml pyyaml

10
推荐指数
1
解决办法
2407
查看次数

如何使用Python更新.yml文件,忽略已有的Jinja语法?

我有一些预处理与一些现有的.yml文件 - 但是,其中一些嵌入了Jinja模板语法:

A:
 B:
 - ip: 1.2.3.4
 - myArray:
   - {{ jinja.variable }}
   - val1
   - val2
Run Code Online (Sandbox Code Playgroud)

我想在这个文件中读取,并添加val3myArray这样:

A:
 B:
 - ip: 1.2.3.4
 - myArray:
   - {{ jinja.variable }}
   - val1
   - val2
   - val 3
Run Code Online (Sandbox Code Playgroud)

我试着手动写出jinja模板,但是他们用单引号写了: '{{ jinja.variable }}'

对于我来说,阅读这些.yml文件并修改它们的推荐方法是什么,尽管有预先存在的Jinja语法?我想向这些文件添加信息,保持其他所有相同.

我在Python 2.7+上使用PyYAML尝试了上述内容

python yaml jinja2 python-2.7

9
推荐指数
2
解决办法
1170
查看次数

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

用python导入我的数据库连接

是否可以使用我的数据库凭据创建一个py文件以连接到MySQL数据库。

con = [ [ip='0.0.0.0'],[username = 'root'],
[password='pswd'],[database='test']]
Run Code Online (Sandbox Code Playgroud)

然后在另一个文件上使用此文件。

喜欢

import dbcon.py*

dbcon.sort

con = mdb.connect(info from py file goes here.)
Run Code Online (Sandbox Code Playgroud)

python mysql

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

将 YAML 加载为嵌套对象而不是 Python 中的字典

我在 YAML 中有一个配置文件,当前使用 yaml.safe_load 作为字典加载。为了方便编写我的代码,我更愿意将它作为一组嵌套对象加载。引用字典的更深层次很麻烦,并且使代码更难阅读。

例子:

import yaml
mydict = yaml.safe_load("""
a: 1
b:
- q: "foo"
  r: 99
  s: 98
- x: "bar"
  y: 97
  z: 96
c:
  d: 7
  e: 8
  f: [9,10,11]
""")
Run Code Online (Sandbox Code Playgroud)

目前,我访问诸如

mydict["b"][0]["r"]
>>> 99
Run Code Online (Sandbox Code Playgroud)

我希望能够做的是访问相同的信息,如

mydict.b[0].r
>>> 99
Run Code Online (Sandbox Code Playgroud)

有没有办法像这样将 YAML 加载为嵌套对象?或者我是否必须滚动自己的类并递归地将这些字典翻转为嵌套对象?我猜namedtuple可以让这更容易一些,但我更喜欢整个事情的现成解决方案。

python yaml

3
推荐指数
2
解决办法
5932
查看次数

Python GC 也会关闭文件吗?

考虑以下 Python (2.x) 代码:

for line in open('foo').readlines():
    print line.rstrip()
Run Code Online (Sandbox Code Playgroud)

我认为由于打开的文件仍未被引用,因此必须自动关闭。我已经阅读了 Python 中的垃圾收集器,它可以释放未使用对象分配的内存。GC 是否足够通用来处理文件?

python garbage-collection file

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