我在" origFile'中有一个网址列表这将被扩充并写入&ready;' readyFile'。我想将网址添加到readyFile'只有当他们还没有出现在&ready文件中时...
with open('bpBlacklist.txt', 'r') as origFile, open('bpBlacklistReady','r+') as readyFile :
for line in origFile:
orig_string = line.strip()
if orig_string in readyFile.read():
None
else:
readyFile.write( "'" + orig_string + "'," + '\n' )
origFile.close()
readyFile.close()
现在,它只是将整个列表重写为&ready;' readyFile'每次我运行它。我试着移动"' + str +'" if语句之外的扩充,但问题仍然存在。
答案 0 :(得分:1)
通过撰写readyFile.write(...)
,您的下一个readyFile.read()
电话将被覆盖。您应该在with
语句后立即将readyFile内容保存到变量中:
with open('bpBlacklist.txt', 'r') as origFile, open('bpBlacklistReady','r+') as readyFile :
readyFileContent = readyFile.read()
答案 1 :(得分:0)
您的情况无法正常工作,因为read()
方法会将整个文件作为字符串返回。您需要检查可迭代网址之间的成员资格。
而不是循环遍历文件并检查所有网址的成员资格,您可以使用set.difference()
函数找到差异,然后编写额外的网址:
with open('bpBlacklist.txt', 'r') as origFile, open('bpBlacklistReady','r+') as readyFile :
current = set(origFile)
diffs = current.difference(readyFile.readlines())
for url in diffs:
readyFile.write(url + '\n')