防止文本文件末尾出现空行
防止文本文件末尾出现空行
这个问题已经有了答案:
我在 Python 中创建了一个程序,使用 .txt 文件作为数据库,以此保存用户数据。
该数据以以下方式存储在文件中:
- 文件中的每一行表示一个用户
- 用户存储为:
用户ID,名字,姓氏,电话号码,国家
当我尝试删除文件中的最后一个用户时,问题就出现了,因为它会留下一个空行,从而破坏程序中列出用户的功能。
例如:
假设在文本文件中有两个用户:image1
现在我删除了最后一个用户(00002):image2
因此,有一行空行,当我添加一个新用户时,它看起来像这样:image3
以下是我用于删除用户的代码:
def delete_user(file, user_id): with open(file, 'r+') as f: users = f.readlines() f.seek(0) for user in users: if user.split(',')[0] != user_id: f.write(user) f.truncate()
以下是我用于添加用户的代码:
def add_user(file, first_name, last_name, phone_number, country): filesize = os.path.getsize(file) with open(file, 'r+') as f: if filesize == 0: f.write(f'{"1".zfill(5)},{first_name},{last_name},{phone_number},' f'{country}') else: last_line = f.readlines()[-1] user_id = int(last_line.split(',')[0]) f.write(f'\n{str(user_id+1).zfill(5)},{first_name},{last_name},' f'{phone_number},{country}')
经过调查,我发现问题是因为在最后一行末尾留下了一个换行符(\\n),这个换行符不应该在那里。
那么,我该如何解决这个问题?
admin 更改状态以发布 2023年5月19日
尾随的换行符不应该破坏你的程序。你似乎使用换行符作为分隔符,但在类Unix操作系统上,换行符实际上被认为是行终结符,这意味着每行都应该有一个换行符。
然而,如果你使用标准数据格式,将会更容易处理。你正在使用的类似于CSV,所以我推荐使用csv.DictReader
和csv.DictWriter
,这也将涉及将列标题放入文件中以标记字段。你可能还考虑使用Pandas(例如pandas.read_csv()
和df.to_csv()
)。