3 回答
TA贡献1900条经验 获得超5个赞
我知道,如果您的文件不存在并且用户键入“y”,则会出现此问题。在这种情况下,您的函数应如下所示:
# Searches for any previously made EMA script file and removes it. Currently errors out if file isn't seen #
while beg == 0:
remove = input("Have you used this program before?\n[Y] Yes\n[N] No\n: ").lower()
if remove == "y":
# This line will check if the file exists, if it does it will be deleted
if os.path.exists("EMA_Script.txt"):
os.remove("EMA_Script.txt")
print("File Deleted")
beg += 1
elif remove == "n":
beg += 1
else:
print("Incorrect input.")
beg += 0
如您所见,我添加了此功能,这将帮助您了解该文件是否存在,如果存在,请将其删除。如果该文件不存在,它将简单地继续下一条指令,从而从循环中分离出来。os.path.exists("EMA_Script.txt")beg += 1
让我知道这是否适合您!
TA贡献1836条经验 获得超5个赞
的默认行为是在文件不存在时引发异常。如果要执行其他操作,则需要捕获异常:open
try:
f = open("EMA_Script.txt", "a+")
except FileNotFoundError:
# your code to handle the case when the file doesn't exist (maybe open with write mode)
虽然我们在这里,但在处理文件时使用上下文是一种很好的做法,以确保它们始终处于关闭状态 - 事实上,任何需要关闭的东西(如数据库连接)都应该以这种方式完成。原因是上下文将确保文件已关闭,即使 介于 和 之间的某些内容引发异常也是如此。openclose
因此,与其说是这种模式:
f = open(...)
# do things with file
f.close()
您要执行以下操作:
with open(...) as f:
# do things with file
TA贡献1775条经验 获得超8个赞
您可以使用 try/except 块来捕获 .此外,使用代替变量将清理代码:FileNotFoundErrorbreakbeg
import os
while True:
remove = input("Have you used this program before?\n[Y] Yes\n[N] No\n: ").lower()
if remove == "y":
try:
os.remove("EMA_Script.txt")
print("File Deleted")
except FileNotFoundError:
pass
break
elif remove == "n":
break
else:
print("Incorrect input.")
第二个(嵌套)循环也是如此:如果输入正确,则中断循环,否则继续循环。
添加回答
举报