2015-05-16 23 views
2

我正在嘗試做,檢查配置文件中是否包含字符串('string1'),如果是,則打印字符串和找到的消息( 'Found string1')。我需要將找到的消息存儲爲變量。Python:解析文件中的字符串並返回值作爲變量

的問題正是在這裏(我沒有任何結果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 

回答

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 
相關問題