给定以下格式(.properties或.ini):
propertyName1=propertyValue1
propertyName2=propertyValue2
...
propertyNameN=propertyValueN
Run Code Online (Sandbox Code Playgroud)
对于Java,有一个Properties类,它提供了解析/与上述格式交互的功能.
python的标准库(2.x)中有类似的东西吗?
如果没有,我还有其他选择吗?
我正在使用ConfigParser来读取脚本的运行时配置.
我希望能够灵活地不提供部分名称(有足够简单的脚本;它们不需要'部分').ConfigParser将抛出ConfigParser异常,并且不接受该文件.
如何使ConfigParser只检索ConfigParser没有部分名称的配置文件的元组?例如:
key1=val1
key2:val2
Run Code Online (Sandbox Code Playgroud)
我宁愿不写入配置文件.
我的数据位于.txt文件中(不,我无法将其更改为其他格式),它看起来像这样:
varaiablename = value
something = thisvalue
youget = the_idea
这是我到目前为止的代码(取自Pyparsing中的示例):
from pyparsing import Word, alphas, alphanums, Literal, restOfLine, OneOrMore, \
empty, Suppress, replaceWith
input = open("text.txt", "r")
src = input.read()
# simple grammar to match #define's
ident = Word(alphas + alphanums + "_")
macroDef = ident.setResultsName("name") + "= " + ident.setResultsName("value") + Literal("#") + restOfLine.setResultsName("desc")
for t,s,e in macroDef.scanString(src):
print t.name,"=", t.value
Run Code Online (Sandbox Code Playgroud)
那么如何告诉我的脚本编辑特定变量的特定值?
示例:
我想将variablename的值从value更改为new_value.所以基本上是变量=(我们想要编辑的数据).
我可能应该明确表示我不想直接进入文件并通过将值更改为new_value来更改值,但我想解析数据,找到变量然后给它一个新值.
配置文件通常需要每个部分的节头.在rsyncd配置文件中,全局部分不需要显式地具有节头.rsyncd.conf文件的示例:
[rsyncd.conf]
# GLOBAL OPTIONS
path = /data/ftp
pid file = /var/run/rsyncdpid.pid
syslog facility = local3
uid = rsync
gid = rsync
read only = true
use chroot = true
# MODULE OPTIONS
[mod1]
...
Run Code Online (Sandbox Code Playgroud)
如何使用python解析这样的配置文件ConfigParser?执行以下操作会产生一个错误:
>>> import ConfigParser
>>> cp = ConfigParser.ConfigParser()
>>> cp.read("rsyncd.conf")
# Error: ConfigParser.MissingSectionHeaderError: File contains no section headers.
Run Code Online (Sandbox Code Playgroud) 我有一个文本文件(one.txt),其中包含任意数量的键\xe2\x80\x90值对(其中键和值由冒号\xe2\x80\x93分隔,例如x:17)。以下是一些(减去数字):
\n\n我需要打开该文件并创建一个包含所有键\xe2\x80\x90值对的字典。
\n\n到目前为止我已经打开文件
\n\nfile = []\nwith open('one.txt', 'r') as _:\n for line in _:\n line = line.strip()\n if line:\n file.append(line)\nRun Code Online (Sandbox Code Playgroud)\n\n我以这种方式打开它以消除文本文件中的换行符和最后一个黑行。我得到了 python 中的键值对列表。
\n\n我不确定如何使用列表键值对创建字典。\n我尝试过的所有操作都会出现错误。有些人说了类似的话
\n\n\n\nValueError:字典更新序列元素#0的长度为1;需要 2 个
\n
我有一个属性文件
Configuration.properties
path=/usr/bin
db=mysql
data_path=/temp
Run Code Online (Sandbox Code Playgroud)
我需要读取此文件并在后续脚本中使用路径,db和data_path等变量.我可以使用configParser或只是读取文件并获取值.提前致谢.
我的文件.env文件包含5行
DB_HOST=http://localhost/
DB_DATABASE=bheng-local
DB_USERNAME=root
DB_PASSWORD=1234567890
UNIX_SOCKET=/tmp/mysql.sock
Run Code Online (Sandbox Code Playgroud)
我想编写python来获取DB_DATABASE的值,
我想要这个bheng-local
我会用
import linecache
print linecache.getline('.env', 2)
Run Code Online (Sandbox Code Playgroud)
但是有些人可能会更改cofigs的顺序,这就是为什么行缓存不是我的选择。
我不确定如何只检查某些字符串,但要检查整行,并在后面获取值=。
我有点卡在这里:
file = open('.env', "r")
read = file.read()
my_line = ""
for line in read.splitlines():
if line == "DB_DATABASE=":
my_line = line
break
print my_line
Run Code Online (Sandbox Code Playgroud)
有人可以在这里给我一点推动力吗?