python - 在添加之前检查文本文件中的条目
问题描述
我有一些我认为可以工作的相当简单的代码,但它没有按应有的方式执行,我所做的只是读取一个文本文件以获取 url,如果它在 tex 文件中不存在,我们添加它:
代码:
def verify_links_working(self, url):
if url not in open("links/register.txt").read():
with open("links/register.txt", "a+") as file:
file.write("%s\n" % str(url).strip())
file.close()
它看起来相当直截了当,但它仍然添加了重复的行,我错过了什么吗?任何帮助表示赞赏。
解决方案
您可以对同一个文件进行读取和写入,还可以使用 strip 清除 txt 中的 url 和 url。由于未使用 self ,因此我通过添加 staticmethod 将其删除(假设您将该函数用作类函数:
@staticmethod
def verify_links_working(url):
url_clean = url.strip()
with open('links/register.txt', 'r+') as file:
if url_clean not in {url.strip() for url in file}:
file.write(f'{url_clean}\n')
更好的是,您可以将路径作为参数传递给 register.txt,而不是在函数中对其进行硬编码。因为你的功能会更通用。
推荐阅读
- c# - 使用模拟器更快的 android 屏幕截图
- html - 在搜索页面中插入背景图片
- automation - 在ubuntu中每隔一小时自动删除文件
- c# - 我们可以在 c# 中反序列化 JSON 的同时为属性生成值作为其他属性的组合吗?
- windows - 使用文件大小列出给定结构中的所有文件夹和子文件夹
- python - 用于管理 C++ 项目的 Python 脚本
- c++ - 为什么 clang -Wunused-member-function 不对未使用的成员函数发出警告?
- ruby-on-rails - 如何从 has_many 的双方创建记录:通过关联?
- javascript - 如何实现 Jest Mocks?
- google-cloud-platform - 谷歌云功能;使用 Google Cloud Rest API