如果数据尚不存在,如何将数据插入文本文件(Python)



我试图在Python中创建一个网页抓取脚本,我遵循一堆链接并将它们插入到.txt文件中。但是,只有当网站已经不存在于文件中时,我才想这样做。

我已经写了这个代码插入给定的网站链接到文件,到目前为止(不工作):

def writeSite(site):
file = open("websites.txt", 'a+')
# print(site)
if site in file.read():
return
file.write(site + "n")
file.close()

提前感谢。

您已经非常接近了,但是因为您打开文件是为了追加它,所以它从末尾的文件指针开始。您需要查找到开头重新读取其内容:

def writeSite(site):
file = open("websites.txt", 'a+')
file.seek(0)
# print(site)
if site in file.read():
return
file.write(site + "n")
file.close()

但是,请记住site in file.read()是非常粗糙的。

例如,假设您已经在文件中有'http://somesite.com/page/',但现在您想添加'http://somesite.com/'- URL作为一个整体不在文件中,但您的测试将找到它。

如果您想检查整行(并确保您很好地处理了文件),那么这样做会更好:

def writeSite(site):
site += 'n'
with open("websites.txt", 'a+') as f:
f.seek(0)
if site in f.readlines():
return
f.write(site)

它在站点的名称中添加了一个换行符来分隔文件中的URL,并使用readlines来利用这个事实来检查整个URL。使用with确保文件总是被关闭。

既然你想先读再写,你可以使用'r+'作为模式,并跳过查找——但前提是你可以确定文件已经存在。我假设你选择了'a+',因为事实并非如此。

(以防您担心这会改变site的值—这只适用于函数内部的参数。无论您在函数外部传入的是什么值,都不会受到影响)

相关内容

  • 没有找到相关文章