我在一台新计算机上安装了 Python,不幸的是,我收到了一条来自我已经使用了一段时间的代码的错误消息。这是关于
match
声明的。这是代码:
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.")
现在我的问题是,如何解决“Python version 3.9 does not support
match
statements”的问题?
或者只是
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.")
简单的答案:升级到 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.")
Match 语句是 Python 3.10 的一个特性。您最好升级到 3.10 或 3.11。