python - FileNotFoundError Try and except 似乎不起作用
问题描述
def make_sender(self):
a = False
y = input("Make sender (Y/N)?")
if y.lower() == "y":
a = True
while a == True:
s = input("Enter folder name : ")
t = input("Enter profile name: ")
try:
p = os.getcwd()+("\profiles")
d = os.path.join(p, s,t)
with open(d+".txt","w") as f:
print(">>> Opened ")
except FileNotFoundError:
print(">>> File not found ")
with open(d+".txt","w") as f:
temp = input("Full Name: ")
temp = temp.title()
f.write(temp+"\n")
temp = input("House Number: ")
f.write(temp+"\n")
temp = input("Street Name : ")
f.write(temp+"\n")
temp = input("Postcode : ")
f.write(temp+"\n")
temp = input("Email : ")
f.write(temp+"\n")
a = False
认为我的代码会继续运行,直到输入正确的数据。认为我的尝试和例外是错误的。我得到了正确的除代码,但认为缩进或有什么问题。
解决方案
您可以将 with 块移出循环或将其放在 else 块下。首选将需要额外检查a
(或者return
在开始时更简单 if y.lower != 'y'
。我认为以下方法更清洁:
def make_sender(self):
y = input("Make sender (Y/N)?")
while y.lower() == 'y':
s = input("Enter folder name : ")
t = input("Enter profile name: ")
try:
p = os.getcwd()+("\profiles")
d = os.path.join(p, s,t)
with open(d+".txt","w") as f:
print(">>> Opened ")
except FileNotFoundError:
print(">>> File not found ")
else:
with open(d+".txt","w") as f:
temp = input("Full Name: ")
temp = temp.title()
f.write(temp+"\n")
temp = input("House Number: ")
f.write(temp+"\n")
temp = input("Street Name : ")
f.write(temp+"\n")
temp = input("Postcode : ")
f.write(temp+"\n")
temp = input("Email : ")
f.write(temp+"\n")
break
推荐阅读
- python - 嵌套函数调用总是在一起
- vb.net - 我不明白这个 datagridview 新操作调用命令的语法应该是什么
- python - 如何在 Django ORM 中随时间存储数据?
- java - 单个应用程序中的两个身份验证服务
- android - 更新 MACBook Pro 后 Android Studio 自动关闭 - ERROR_CGDataProviderCreateWithData_BufferIsNotReadable+0x10
- c# - 如何从链接下给出的 SharePoint 列表中读取文件内容
- c# - 在 Web api 上正确使用来自同一端点的两个“成功”响应之一的最佳方法是什么?
- discord.py - 我在获取用户在命令后输入的内容时遇到问题
- mysql - SELECT 中的变量赋值评估顺序可能与返回的行顺序不同。在什么条件下会发生这种情况?
- flutter - 如何仅在容器的特定一侧添加阴影?