簡體   English   中英

Python:解析文件中的字符串並將其值返回為變量

[英]Python: Parse file for a string and return value as variable

我正在嘗試執行此操作,檢查配置文件中的行是否包含字符串( '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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM