Python:解析字符串的文件并将值作为变量返回

时间:2015-05-16 08:38:29

标签: python python-3.x

我试图这样做,检查配置文件中的行是否包含字符串('string1'),如果是,则打印字符串和找到的消息('Found string1') 。我需要将找到的消息存储为变量。

问题就在这里(我不会对print(line)print('Found string1')有任何结果:

def get_version():
    logger.info('Started')
    for file in os.listdir(running_config_dir):
        if file.endswith('.config'):
            for line in file:
                if str('string1') in line:
                    print(line)
                    print('Found string1')
        else:
            logger.critical('Running Configuration not found')

    logger.info('Finished')

这是我的配置文件

string1
string2
string3

1 个答案:

答案 0 :(得分:3)

file字符串,包含文件名。因此,遍历字符串会为您提供单独的字符,文件的内容:

>>> file = 'foo'
>>> for line in file:
...     print(line)
... 
f
o
o

您需要打开文件名以获取文件对象:

with open(file) as fileobj:
    for line in fileobj:

请注意,'...'文字字符串语法已生成字符串对象,无需将其传递给str()调用。

我不确定将找到的消息存储为变量是什么意思;您已经可以访问line变量,因此您可以返回:

def get_version():
    logger.info('Started')
    version = None
    for file in os.listdir(running_config_dir):
        if file.endswith('.config'):
            with open(file) as fileobj:
                for line in fileobj:
                    if 'string1' in line:
                        print(line)
                        print('Found string1')
                        version = line.strip()
        else:
            logger.critical('Running Configuration not found')

    logger.info('Finished')
    return version