Python 3.9 版本不支持匹配语句[关闭]

问题描述 投票:0回答:3

我在一台新计算机上安装了 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”的问题?

python python-3.9
3个回答
7
投票

或者只是

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.")

5
投票

简单的答案:升级到 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.")

1
投票

Match 语句是 Python 3.10 的一个特性。您最好升级到 3.10 或 3.11。

https://monovm.com/blog/how-to-update-python-version/

© www.soinside.com 2019 - 2024. All rights reserved.