我在一台新计算机上安装了Python,不幸的是,我从一段时间以来一直使用的代码中得到了一条错误消息。这是关于“匹配”声明的。以下是代码:
import os
def save(df, filepath):
dir, filename = os.path.split(filepath)
os.makedirs(dir, exist_ok=True)
_, ext = os.path.splitext(filename)
match ext:
case ".pkl":
df.to_pickle(filepath)
case ".csv":
df.to_csv(filepath)
case _:
raise NotImplementedError(f"Saving as {ext}-files not implemented.")现在我的问题是,如何解决“PythonVersion3.9不支持match语句”的问题?
发布于 2022-11-11 09:24:26
或者只有if和elif。
import os
def save(df, filepath):
dir, filename = os.path.split(filepath)
os.makedirs(dir, exist_ok=True)
_, ext = os.path.splitext(filename)
if ext == ".pkl":
df.to_pickle(filepath)
elif ext == ".csv":
df.to_csv(filepath)
else:
raise NotImplementedError(f"Saving as {ext}-files not implemented.")发布于 2022-11-11 09:16:58
Match语句是Python3.10的一个特性。如果升级到3.10或3.11,你会做得最好。
发布于 2022-11-11 09:19:49
简单的答案是:升级到Python 3.10。
如果无法升级,则可以使用Python字典作为替代:
MATCH = {
'.pkl': df.to_pickle
'.csv': df.to_csv
}
_, ext = os.path.splitext(filename)
try:
MATCH[ext](filepath)
except KeyError:
raise NotImplementedError(f"Saving as {ext}-files not implemented.")https://stackoverflow.com/questions/74400296
复制相似问题