有没有办法写一个看不见的换行符(" ") 使用 Python 转换为文本文件?

问题描述 投票:0回答:1

我正在尝试使用 Python 写入文本文件。该文本文件包含现有的文本行:“admin, adm1n”(admin 是用户名,adm1n 是密码)。我在新行中添加了新的用户名和密码(makay、makay1),但是当我尝试使用 adm1n 密码重新调用 admin 时,结果发现新行被附加到“adm1n”。任何建议都有助于创建不可见的换行符。

代码片段:

existing_users = open('user.txt', 'r+')
new_username = input("Please create a new username: ")
new_password = input("Please create a new password: ")
existing_users.write(f"\n{new_username}, {new_password}")
print(f"You have successfully registered the user {new_username}! Please remember to exit program.")
existing_users.close()

输出文本文件为:

admin, adm1n
makay, makay1

但是,当我打印出密码列表时,我看到它将“adm1n”更改为“adm1n” ”.

请帮忙!

python text-files newline
1个回答
0
投票

您的问题似乎与如何将新用户和密码附加到文件以及之后如何读取文件有关,而不是与如何写入数据有关。当您用“写入新的用户名和密码时 {new_username},{new_password}”,您正确地在新用户数据之前添加了换行符,这不应影响上一行的最后一个字符。

但是,如果您从文件中读取并注意到“adm1n”已变为“adm1n” ”,这表明当您读回密码时,而不是在写入密码时,换行符将作为密码的一部分包含在内。这种情况经常发生,因为从文件中读取行在每个行的末尾都包含换行符行,如果最后一行不以换行符结尾,则可能除外。

为了确保读回数据时不包含换行符,您应该将它们从行中删除。以下是如何从文件中读取用户名和密码,而不在密码中包含换行符:

# Open the file to read existing users
with open('user.txt', 'r') as file:
    users = [line.strip().split(", ") for line in file.readlines()]

# Print the usernames and passwords to verify
for username, password in users:
    print(f"Username: {username}, Password: {password}")

在此代码片段中,line.strip().split(", ") 用于使用 strip() 从每行中删除前导和尾随空格(包括换行符),然后使用以下命令将该行拆分为用户名和密码分裂(”, ”)。这样,您将获得正确的值,而无需在密码中尾随换行符。

关于您的写作问题,您现有的方法似乎是正确的,为每个新用户和密码附加一个新行。如果您仍然遇到问题,请确保您的文件读取逻辑正确处理格式,并考虑在仅添加新条目时以附加模式打开文件(如果您还需要读取,则为“a”或“a+”)以避免潜在的潜在风险“r+”模式下文件光标的问题。但是,对于您提供的用例,您的编写代码应该按预期工作,假设您开始编写时文件光标位于文件末尾。如果您发现由于某种原因光标不在末尾,您可以在写入之前使用existing_users.seek(0, 2)显式地将其移动到那里。

© www.soinside.com 2019 - 2024. All rights reserved.