Я пытаюсь использовать FileInput для замены строки в файле, если в строке есть определенное слово. Он в основном добавляет к файлу. Он работает, но дает мне TypeError, я пытаюсь выяснить, где ошибка.Тип Ошибка при запуске функции
tagname = 'somestring'
def add_tags():
for line in fileinput.FileInput('/tmp/hosttags.mk',inplace=1):
if 'end_tags' in line:
line = line.replace(""" ('end_tags',""", """('%s',
u'/%s',
[('%s', u'%s tag', [])]),
('end_tags',
u'testing/end_tags_start',
[('end_tag_id', u'end_tag_description', [])])]""") % (tagname, tagname, tagname, tagname)
print line.strip()
ошибка:
Traceback (most recent call last):
File "./tag_update.py", line 57, in <module>
checkmk_srv_tag_update()
File "./tag_update.py", line 54, in checkmk_srv_tag_update
add_tags()
File "./tag_update.py", line 45, in add_tags
[('end_tag_id', u'end_tag_description', [])])]""") % (tagname, tagname, tagname, tagname)
TypeError: not all arguments converted during string formatting
конечный результат файла обновляется:
('house',
u'/house',
[('house', u'house tag', [])]),
('somestring',
u'/somestring',
[('somestring', u'somestring tag', [])]),
('end_tags',
u'testing/end_tags_start',
[('end_tag_id', u'end_tag_description', [])])]
благодаря
Что произойдет, если строка содержит 'end_tags', но не' («end_tags», ' –
он совпадает с линией – DRO