Я установил 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 версии 3.9 не поддерживает операторы соответствия»?
Есть ли причина, по которой вы не можете обновить установленную версию Python?
@Cobra: Спасибо, Кобра, за ваш комментарий. К сожалению, я не могу обновить интерпретатор Python до версии 3.10 в PyCharm. При этом я получаю сообщение об ошибке, в котором говорится, что я должен загрузить Python вручную. У меня был неудачный опыт установки Python вручную, поэтому я не обязательно хочу этого делать.
Операторы соответствия — это функция Python 3.10. Лучше всего обновиться до 3.10 или 3.11.
https://monovm.com/blog/how-to-update-python-version/
Спасибо Тейрас за ваш ответ. К сожалению, я не могу обновить интерпретатор Python (см. комментарий выше под моим вопросом).
Простой ответ: обновитесь до 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.")
Или просто 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?