消除';q';当用户在python中输入q时,从文本文件

消除';q';当用户在python中输入q时,从文本文件,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我尝试创建一个文本文件,用于询问用户名并将每个用户名存储在该文件的新行中。现在,由于使用while循环获取用户输入的次数不限,我为用户创建了一个退出选项,让用户输入“q”进行退出。。。。随时完成此任务后,当我打开文本文件“guest_book.txt”时,我想去掉结尾行“q” 通常对于列表,我们使用类似[elt for elt in filename if elt not in'q']的模式,这将消除该'q'。如何使用文本文件?任何意见都将不胜感激 这是我的密码: filename='guest

我尝试创建一个文本文件,用于询问用户名并将每个用户名存储在该文件的新行中。现在,由于使用while循环获取用户输入的次数不限,我为用户创建了一个退出选项,让用户输入“q”进行退出。。。。随时完成此任务后,当我打开文本文件“guest_book.txt”时,我想去掉结尾行“q”

通常对于列表,我们使用类似[elt for elt in filename if elt not in'q']的模式,这将消除该'q'。如何使用文本文件?任何意见都将不胜感激

这是我的密码:

filename='guest_book.txt'

with open(filename,'a') as file_object:

    while True:
        user_name = input("Enter your name: ")
        file_object.write(user_name)
        file_object.write('\n')
以下是我的解决方案:

filename='guest_book.txt'

# Edit 1
with open(filename, 'a') as file_object:

    while True:
        user_name = input("Enter your name: ")

        if user_name == 'q':
            break

        else:
            file_object.write(user_name)
            file_object.write('\n')

使用此代码,当它将用户名识别为“q”时,它将立即中断,而不将“q”写入文件。

最好的方法是插入中断

while True:
    user_name = input("Enter your name: ")
    if user_name=="q":
        break
    file_object.write(user_name)
    file_object.write('\n')
你可以这样做

user_name=None
while not user_name == "q":
    user_name = input("Enter your name: ")
    file_object.write(user_name)
    file_object.write('\n')

但是break可能是这里的最佳实践

您的代码没有显示如何处理q。难道你不能在输入后检查它,并在写入文件之前中断循环吗?答案上的缩进被打断了。你不需要关闭文件缩进,关闭文件只是我的习惯。主要的更改是中断部分。
file\u object.close()
部分是多余的,无论如何都将由
open
内容管理器完成。您只需要
break
退出循环。顺便说一句,如果用户名要“添加”到留言簿中,则打开模式应该是“a”,而不是“w”,否则,每次都将重新创建该文件