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

2024-10-01 07:10:25 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

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”,我希望脚本继续运行,而不将文本打印到终端。在

我看不出我做错了什么明显的事。有人能帮我再看一眼吗?非常感谢。在


Tags: or代码youinputyourdatarawis
3条回答

if viewYourFile == 'Y' or 'y':始终计算为True,因为第二个条件'y'总是True。在

>>> bool('y')
True
>>> bool(False or 'y')
True

请改用if viewYourFile in ('Y', 'y'):。在

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

^{pr2}$

另请参见:

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

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

您应该:

if viewYourFile == 'Y' or viewYourFile == 'y':

或者像@alecxe建议的那样,即:

^{pr2}$

另一个减少打字的好方法是:

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

相关问题 更多 >