我正在解析配置文件我想只得到文件中文件路径的值
例如配置文件有
apache.access = /var/log/apache2/access.log
apache.errors = /var/log/apache2/errors.log
我想从
获取'/var/log/apache2/access.log'和'/var/log/apache2/errors.log'COMMENT_CHAR = '#'
OPTION_CHAR = '='
def parse_config(filename):
options = {}
f = open(filename)
for line in f:
if COMMENT_CHAR in line:
line, comment = line.split(COMMENT_CHAR, 1)
if OPTION_CHAR in line:
option, value = line.split(OPTION_CHAR, 1)
option = option.strip()
value = value.strip()
options[option] = value
f.close()
return options
我尝试了这个,但它提供了文件中的所有选项和值
apache.access:/var/log/apache2/access.log
apache.errors:/var/log/apache2/errors.log
答案 0 :(得分:3)
首先,您必须定义什么是文件路径(1.它是否必须存在?2。它是否必须在现有目录中创建?3。还有其他什么?)。这将测试给定字符串是否是指向现有目录/文件的路径:
import os
# ...
[v for v in options.itervalues() if os.path.exists(v)]
答案 1 :(得分:2)
正则表达式是您所需要的。这是一个很好的例子,它看起来如何
import re
f = open("apache.log")
for line in f:
m = re.match("apache\.(access|errors)\s+=\s+(.+)", line)
if None != m:
print (m.group(2))
f.close()