繁体   English   中英

File.open和YAML.load_file显示同一文件的不同内容

[英]File.open and YAML.load_file displaying different content for same file

这真的很奇怪。 当我从YAML.load_file加载YML文件并且File.open显示相同的文本但数字不同时。 这是编码问题还是什么? 我以前从未见过这个。

该文件是bank.yml

production:
  account_number: 574827192
  routing_number: 048372651

旁注:我更改了下面文件中的数字,以便不显示任何实际的私人数据。

UPDATE =>我意识到主要问题是前导零的结果。 您不能在YAML文件中具有前导零,或者它将变为八进制。 试图弄清楚如何构造YAML文件以包含前导零。

> irb(main):027:0> YAML.load_file("#{Rails.root}/../../bank.yml")
> => {"production"=>{"account_number"=>574827192, "routing_number"=>847365987}}

> irb(main):028:0> File.open("#{Rails.root}/../../bank.yml").read
> => "production:\n  account_number: 574827192\n  routing_number: 048372651\n"

如果用引号将YAML文件中的值包装起来,它们将被视为字符串,而不是删除前导零或将其解析为八进制:

production:
  account_number: '574827192'
  routing_number: '048372651'

是的,当你在做YAML.load_file ,它实际上解码了YAML结构,并为你提供了很好的hash ,你可以很容易地使用它。

但是,当您执行File.open("file.yaml").read ,您正在以原始格式读取文件,您必须进一步解码它,将其用作hash或其他一些数据结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM