【发布时间】:2022-01-12 09:23:12
【问题描述】:
我正在尝试执行一条语句,但如果它失败了,我想执行 except 语句,然后我想再次执行 try。我知道我可以使用循环,但我正在寻找更优雅的解决方案。
在我的用例中,我尝试将文件保存到文件夹中,但如果出现 FileNotFoundError,我想在 except 中创建文件夹并再次尝试。
from pathlib import Path
import os
folder = Path('folder')
df = [a,b,c]
try:
df.to_feather(folder / 'abc.ftr')
except:
os.makedirs(folder)
df.to_feather(folder / 'abc.ftr')
但在这种情况下,我会重复 df.to_feather(folder / 'abc.ftr') 语句。如果语句变大,这会很烦人,我不想为此构建一个函数。
另一种方式可能是:
if folder not in os.listdir():
os.makedirs(folder)
df.to_feather(folder / 'abc.ftr')
这是解决这个问题的“正确”方法吗?
【问题讨论】:
-
@Nathan 不是重复的!
-
你的陈述是矛盾的:“如果陈述变得更大,这会很烦人,我不想为此构建一个函数。” - 将问题分解成更小的部分(本例中的函数)是一种降低复杂性和重用代码以避免重复的方法。你为什么不想这样做?
标签: python try-except filenotfounderror