以下代码按预期工作,但 os.path.join 在 VSCode 中使用 pyright 会产生类型错误,如图所示。
# python 3.6.9
# pyright 1.1.25
# windows 10
# vscode 1.42.1
import os
import tempfile
with tempfile.TemporaryDirectory() as tmpfolder:
name = "hello.txt"
path = os.path.join(tmpfolder, name)
# No overloads for 'os.path.join(tmpfolder, name)' match parameters
# Argument types: (TypeVar['AnyStr', str, bytes], Literal['hello.txt'])
print(path)
我想我理解问题的直接原因,但认为它不应该发生。鉴于此,我有一些问题:
- 这是编写此代码的惯用方式吗?
- 是 tempfile、os、pyright 还是我的问题?
- 如果我无法升级 Python,抑制错误的最佳(即最不笨重)方法是什么?