如何读取 inifile 中的多行值
How to read multiline values in inifile
我正在尝试使用在 ini 文件中指定为列表的多行值,我能够读取部分但无法从给定键读取多行值。
我试过用列表方式完全失败了。
# Ini file
[UNITS]
COMPARE_UNITS = [list
[11871000 118700]
[1198100 1198100]
]
[VARS]
OLD_REL = 4.3
NEW_REL = 4.5
我曾尝试使用基于字符串的格式,但我失败了,但我能够读取给定键值的部分和第一行。
# Ini file
[UNITS]
COMPARE_UNITS = "
11871000 118700
1198100 1198100
"
[VARS]
OLD_REL = 4.3
NEW_REL = 4.5
当我尝试获取键值时,它 returns 只有第一行
% set fileOrg [ini::open "sample.ini" r]
ini11
% foreach sec [ini::sections $fileOrg] {puts [::ini::get $fileOrg $sec]}
NEW_REL 4.5 OLD_REL 4.3
COMPARE_UNITS {1198100 1198100}
%
我有两个问题
- 如何使用 package inifile
从给定键中读取多值
- 我可以在键中指定列表值吗?
-马利
INI file 格式不支持多行值。规范是用方括号中的节名称开始新节的行,或者是键名后跟等号后跟在行尾终止的值的行。或注释行。
tcllib 解析器将文件分成多行,如果该行不是注释、不是节开头且不包含等号,则将其丢弃。
如果您想在 INI 文件值中包含多个值,那么您应该使用一些特定于应用程序的字段分隔符或多个键,例如:
[Test.Field]
multi-field = first|second|third
[Test.MultiKey]
multi.1 = first
multi.2 = second
multi.3 = third
第一个版本可以像这样简单地使用:
set ini [ini::open test.ini r]
set fields [split [ini::value $ini Test.Field multi-field] "|"]
我正在尝试使用在 ini 文件中指定为列表的多行值,我能够读取部分但无法从给定键读取多行值。
我试过用列表方式完全失败了。
# Ini file
[UNITS]
COMPARE_UNITS = [list
[11871000 118700]
[1198100 1198100]
]
[VARS]
OLD_REL = 4.3
NEW_REL = 4.5
我曾尝试使用基于字符串的格式,但我失败了,但我能够读取给定键值的部分和第一行。
# Ini file
[UNITS]
COMPARE_UNITS = "
11871000 118700
1198100 1198100
"
[VARS]
OLD_REL = 4.3
NEW_REL = 4.5
当我尝试获取键值时,它 returns 只有第一行
% set fileOrg [ini::open "sample.ini" r]
ini11
% foreach sec [ini::sections $fileOrg] {puts [::ini::get $fileOrg $sec]}
NEW_REL 4.5 OLD_REL 4.3
COMPARE_UNITS {1198100 1198100}
%
我有两个问题
- 如何使用 package inifile 从给定键中读取多值
- 我可以在键中指定列表值吗?
-马利
INI file 格式不支持多行值。规范是用方括号中的节名称开始新节的行,或者是键名后跟等号后跟在行尾终止的值的行。或注释行。
tcllib 解析器将文件分成多行,如果该行不是注释、不是节开头且不包含等号,则将其丢弃。
如果您想在 INI 文件值中包含多个值,那么您应该使用一些特定于应用程序的字段分隔符或多个键,例如:
[Test.Field]
multi-field = first|second|third
[Test.MultiKey]
multi.1 = first
multi.2 = second
multi.3 = third
第一个版本可以像这样简单地使用:
set ini [ini::open test.ini r]
set fields [split [ini::value $ini Test.Field multi-field] "|"]