【问题标题】:Break program if file is empty如果文件为空则中断程序
【发布时间】:2019-02-28 13:25:30
【问题描述】:

下面的代码从文件中随机选择一个单词,然后删除该单词,它的工作效果很好。我希望程序在文件为空时中断,因为我删除了从文件中挑选的每个随机单词。

这是代码的随机部分:

import random
import os

g = r"C:\Users\Homer\name.txt"
lines = [line.rstrip('\n') for line in open(g)]
rand = random.choice(lines)       
print(rand)

如果文件为空并打印“文件为空”,是否可以说中断? 或者如果 Random (rand) 不返回任何单词,则中断并打印文件为空。

我已经检查了这个网站,并且有一些关于如何检查文件是否为空和打印文件是否为空或文件大小为零或文件中没有单词的答案。但是,如果文件为空,我可以找到一个说 BREAK 程序的程序。当我的文件为空时,我收到以下错误。

--->rand = random.choice(lines)
IndexError: Cannot choose from an empty sequence

目前我正在使用下面的代码来检查文件是否为空。但我不断收到 break 语句的错误。

if os.path.getsize("name.txt") == 0:
    print("File is Empty")
else:
    print("File is not Empty")
    break


 ----> SyntaxError: 'break' outside loop

【问题讨论】:

  • Break 与 continue 关键字结合使用。我在这段代码中看到的任何地方都没有使用循环。如果您希望程序在 else 块中停止,那么您需要 return 而不是 break
  • 您只能在循环中使用 break。在您的情况下,只需使用 return 来终止您的程序。
  • 您的代码中没有 break。你确定不要vreturn
  • 此外,您可以删除 break 并在您的打印语句之前键入 return。或者之后,没有太大区别。
  • 如果你想停止你的整个程序,你可以抛出一个异常,或者直接使用exit("I can't cope")

标签: python file random break


【解决方案1】:

你的代码应该是什么(我认为):

if os.path.getsize("name.txt") == 0:
    print("File is Empty")
else:
    return print("File is not Empty")

你快到了。

break 用于提前停止for 循环。没有显式 break 关键字的循环的默认行为是 continue,直到迭代器中没有剩余索引。

您在这里没有使用循环。因此,当您向 Python 询问 break 时,它没有任何停止的余地。

break关键字的用法示例:

for x in range(20):
    if x != 13:
        print(x)
        continue # uneccesary as it will continue by default
    else:
        print("we don't like 13")
        break

【讨论】:

  • 感谢您的解决方案。我只是尝试了 return 而不是 break 但我收到一个错误说“return” outside function。
  • 如果它既不是函数也不是循环,你的预期结果到底是什么?
  • 如果你是从命令行运行,那么我猜你可以在 else: 块中使用 exit()
  • 我使用 try 和除了错误代码退出,它对我有用。感谢您的提示,上面的代码和想法。非常感谢
猜你喜欢
  • 1970-01-01
  • 2019-03-31
  • 1970-01-01
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
  • 2012-01-29
  • 2021-12-01
  • 2020-03-20
相关资源
最近更新 更多