检查非字符串的文件扩展名

Check file extension of a non string

from tkinter.filedialog import askopenfilename
import os

load_list = open(askopenfilename(), "rb")
file_name, file_extension = os.path.splitext(load_list)
if str(file_extension).lower() == (".p", ".pickle"):
    print("pickle")

我读到此方法适用于以字符串形式给出的文件路径,但这不适用于我获取文件路径的方法。

我收到一个错误:

AttributeError: '_io.BufferedReader' object has no attribute 'rfind'

您正在比较字符串和元组。您可能打算使用 in:

if file_extension.lower() in (".p", ".pickle"):

而且,您应该将文件名传递给 splitext(),而不是文件对象。替换:

file_name, file_extension = os.path.splitext(load_list)

与:

filename = askopenfilename()
_, file_extension = os.path.splitext(filename)