【问题标题】:Python: If Statement For Reading Txt Files [duplicate]Python:用于读取 Txt 文件的 If 语句 [重复]
【发布时间】:2013-09-05 11:48:28
【问题描述】:

这是我的代码:

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

我看不出有什么明显的错误。有人可以再看看我吗?非常感谢。

【问题讨论】:

  • @BubbleMonster 如果你得到答案,请选择一个。

标签: python if-statement


【解决方案1】:

if viewYourFile == 'Y' or 'y': 的计算结果始终为 True,因为第二个条件 'y' 始终为 True

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

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

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

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"

另见:

【讨论】:

  • 谢谢你的作品。你能解释一下为什么它的计算结果为真但它不使用括号吗?
  • @BubbleMonster 不客气,查看更新的答案,希望清楚。
  • @BubbleMonster 也可以在这里查看解释:stackoverflow.com/questions/15112125/if-x-or-y-or-z-blah
  • 谢谢,这是有道理的,但是,当我这样做时:使用 open('messages.txt', 'r+') as fo - 我收到一个错误:语法无效。不太清楚为什么。
  • @BubbleMonster 哦,对不起,遗漏了冒号,已编辑,试一试。
【解决方案2】:

你应该这样做:

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

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

if viewYourFile in ('Y', 'y'):

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

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

【讨论】:

  • 谢谢桑托什。投票赞成该信息。不知道我必须使用一个参数声明变量两次!
【解决方案3】:

我认为更聪明会导致一个寄存器:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 2013-04-05
    相关资源
    最近更新 更多