Python:If语句用于读取Txt文件

Python:If语句用于读取Txt文件,python,if-statement,Python,If Statement,这是我的密码: print "Note: Your file is available now." viewYourFile = raw_input("\nDo you wish to view this file now? ") if viewYourFile == 'Y' or 'y': fo = open('messages.txt', 'r+') #Read whole file into data data = fo.read() print data

这是我的密码:

print "Note: Your file is available now."
viewYourFile = raw_input("\nDo you wish to view this file now? ")

if viewYourFile == 'Y' or 'y':
    fo = open('messages.txt', 'r+')
    #Read whole file into data
    data = fo.read()
    print data
    # Close the file
    fo.close()
elif viewYourFile == 'N' or 'n': 
    print "Thank you!"
else:
    print "Didn't recognize user input"
当我输入“n”时,文本文件仍然打开。如果用户键入“N”或“N”,我希望脚本在不将文本打印到终端的情况下继续


我看不出我做错了什么。有人能帮我再看一下吗?非常感谢。

如果查看您的文件=='Y'或'Y':
总是计算为
True
,因为第二个条件
'Y'
总是
True

>>> bool('y')
True
>>> bool(False or 'y')
True
如果在('Y','Y')中查看您的文件,请使用

另外,不要手动关闭文件,而是与上下文管理器一起使用
。下面是生成的代码:

print "Note: Your file is available now."
viewYourFile = raw_input("\nDo you wish to view this file now? ")

if viewYourFile in ('Y', 'y'):
    with open('messages.txt', 'r+') as fo:
        data = fo.read()
elif viewYourFile in ('N', 'n'): 
    print "Thank you!"
else:
    print "Didn't recognize user input"
另见:


如果查看您的文件=='Y'或'Y':
总是计算为
,因为第二个条件
'Y'
总是

>>> bool('y')
True
>>> bool(False or 'y')
True
如果在('Y','Y')中查看您的文件,请使用

另外,不要手动关闭文件,而是与上下文管理器一起使用
。下面是生成的代码:

print "Note: Your file is available now."
viewYourFile = raw_input("\nDo you wish to view this file now? ")

if viewYourFile in ('Y', 'y'):
    with open('messages.txt', 'r+') as fo:
        data = fo.read()
elif viewYourFile in ('N', 'n'): 
    print "Thank you!"
else:
    print "Didn't recognize user input"
另见:


我认为越聪明,就会产生一个寄存器:

if viewYourFile.lower() == 'y':

我认为越聪明,就有一个寄存器:

if viewYourFile.lower() == 'y':
你应该做:

if viewYourFile == 'Y' or viewYourFile == 'y':
或如建议的那样,即:

if viewYourFile in ('Y', 'y'):
另一个减少键入的好方法是:

if viewYourFile.lower() == 'y':
你应该做:

if viewYourFile == 'Y' or viewYourFile == 'y':
或如建议的那样,即:

if viewYourFile in ('Y', 'y'):
另一个减少键入的好方法是:

if viewYourFile.lower() == 'y':

谢谢,这很有效。你能解释一下为什么它的计算结果为真,但它不使用括号吗?@BubbleMonster不客气,请参阅更新的答案,希望答案清楚。@BubbleMonster也在这里看到解释:谢谢,是的,这很有意义,但是,当我这样做时:使用open('messages.txt','r+')作为fo-我得到一个错误:无效语法。不太清楚为什么。@BubbleMonster哦,对不起,漏掉了冒号,编辑好了,试试看。谢谢你的帮助。你能解释一下为什么它的计算结果为真,但它不使用括号吗?@BubbleMonster不客气,请参阅更新的答案,希望答案清楚。@BubbleMonster也在这里看到解释:谢谢,是的,这很有意义,但是,当我这样做时:使用open('messages.txt','r+')作为fo-我得到一个错误:无效语法。不太清楚为什么。@BubbleMonster哦,对不起,漏掉了冒号,编辑好了,试试看。谢谢Santosh。投票支持那个信息。我不知道我必须使用一个参数声明变量两次!谢谢桑托什。投票支持那个信息。我不知道我必须使用一个参数声明变量两次@如果您得到答案,请选择一个。@BubbleMonster如果您得到答案,请选择一个。