2016-01-23 3 views
2
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' 
+1

вы не должны включать вещи, которые люди отвечают/точка из примерно в вашем вопросе через редактирование. Это заставляет администратора выглядеть плохо. Я вернул ваш вопрос, чтобы скрыть операцию '==', и добавил AttributeError по мере необходимости. –

+0

@ Jim Спасибо, я новичок здесь, буду помнить. – Navin

ответ

2

Вы сравнивая строку с кортежем. Вы, вероятно, имел в виду использовать 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) 
+2

OP решил отредактировать '==' и заменить его 'in'. Если вы не хотите попасть в цикл rollback-edit, просто удалите первую часть своего ответа, так что не похоже, что вы указываете что-то несуществующее. –

+2

@ Jim хороший пункт, спасибо. – alecxe

+1

@Jim Извините за проблему, ребята, я не понимал, что я изменил ее. – Navin

Смежные вопросы