我试图这样做,检查配置文件中的行是否包含字符串('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
答案 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