2015-02-20 2 views
0

У меня есть функция Python, которая берет строку и записывает ее в текстовый файл. Я изменил это, поэтому он не будет писать строку, если она уже существует, но она, похоже, не работает вообще.Напишите строку в файл, если она уже не содержит его

def log_folder(folder): 
    fname = 'folder.log' 
    fname_exists = os.path.isfile(fname) 

    if not fname_exists: 
     with open(fname,'a+') as outfile: 
      outfile.write(folder+'\n') 
    else: 
     with open(fname,'r+') as inf: 
       if folder not in inf.readlines(): 
       inf.write(folder+'\n') 

Ожидаемый результат в файле:

home/cyberbemon/20150203_220759+0000 
home/cyberbemon/20150203_220759+0012 
home/cyberbemon/20150203_220858+0000 

Что я получаю:

/home/cyberbemon/20150203_220759+0000 
/home/cyberbemon/20150203_220759+0012 
/home/cyberbemon/20150203_220858+0000 
/home/cyberbemon/20150203_220759+0000 
/home/cyberbemon/20150203_220759+0012 
/home/cyberbemon/20150203_220858+0000 

Как вы можете видеть, что они все еще пишут, даже если они существуют в файле.

+0

Вы, вероятно, обработку новой строки неправильно. Попробуйте 'print >> outfile, folder' (тот же для inf) вместо' .write() '. – shx2

ответ

2

Вы просматриваете, если какая-либо строка файла равна папке с равными. НО вы сохраняете папку + '\ n' в каждой строке.

Вы должны изменить эту строку:

if folder not in inf.readlines(): 

To:

if folder+'\n' not in inf.readlines(): 
Смежные вопросы