Python 文件写入覆盖:如何每次都覆盖已有文件?
在 Python 中,使用 'w' 模式打开文件时,会创建一个新文件并覆盖现有文件,但只有在文件不存在时才会创建新文件。如果文件已经存在,'w' 模式将清空文件并从头开始写入。但是,您的代码中使用了 if not os.path.exists('webpages') 来检查文件夹是否存在,而不是检查文件是否存在。
为了确保每次爬取时覆盖现有文件,您可以使用 'w' 模式打开文件,并添加一个额外的参数 truncate() 来清空文件。请修改 crawl_and_index 函数中的文件打开部分如下:
for keyword in keywords:
search_results = crawl_baidu(keyword, page_limit)
if len(search_results) > 0:
file_name = f'webpages/{keyword}.html'
with open(file_name, 'w', encoding='utf-8') as file:
file.truncate(0) # 清空文件内容
for title, url in search_results:
file.write(f'{title}
')
file.write(f'{url}
')
file.write('\n')
else:
print(f'关键词 '{keyword}' 没有搜索结果')
这样,每次运行 crawl_and_index 函数时,它将使用 'w' 模式打开文件,并使用 truncate(0) 方法清空文件内容,然后写入新的搜索结果,实现覆盖现有文件的效果。
请注意,使用 truncate() 方法时,需要传递一个参数来指定截断的长度,这里使用 0 表示清空整个文件。
原文地址: https://www.cveoy.top/t/topic/SPh 著作权归作者所有。请勿转载和采集!