Python 如果文件中尚未包含字符串,则将其写入文件

Python 如果文件中尚未包含字符串,则将其写入文件,python,Python,我有一个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(fo

我有一个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

如您所见,它们仍在编写中,即使它们存在于文件中

您正在检查文件的任何一行是否等于文件夹。 但您正在每行中存储文件夹+“\n”

您应该更改此行:

if folder not in inf.readlines():
致:


你可能在处理新词时出错了。尝试
print>>outfile,folder
(与inf相同)而不是
.write()
if folder+'\n' not in inf.readlines():