2016-01-23 72 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'。如果你不想進入回滾 - 編輯循環,只需刪除答案的第一部分,這樣看起來並不像你指出的東西不存在。 –

+2

@Jim好點,謝謝。 – alecxe

+1

@Jim對不起這個問題的人,我沒有意識到我改回了它。 – Navin