2009-12-10 9 views

Trả lời

12
file = tkFileDialog.askopenfile(parent=root,mode='rb',filetypes=[('Subrip Subtitle File','*.srt')],title='Choose a subtitle file') 
abs_path = os.path.abspath(file.name) 
+2

Điều này sẽ hoạt động miễn là không có cuộc gọi 'os.chdir()' giữa hai dòng đó. Vì vậy, trong trường hợp của câu hỏi này nó có lẽ tốt, nhưng nó không hoàn hảo. Tôi không thể nghĩ ra một cách để làm điều đó sẽ luôn luôn làm việc ra khỏi đỉnh đầu của tôi. –

+0

Tôi không biết lý do nào tốt để sử dụng os.chdir() trong ứng dụng GUI - ít nhất, không phải là một chủ đề cũng sử dụng chuỗi và đó là cách duy nhất bạn có thể nhận cuộc gọi đến chdir() "giữa" hai dòng nguồn mà bạn kiểm soát. –

+0

Cách tiếp cận này có đáng tin cậy không? Trong việc mô tả thuộc tính .name của các đối tượng tệp, các tài liệu python nói: "Đây là thuộc tính chỉ đọc và có thể không có mặt trên tất cả các đối tượng giống như tệp." Xem: https://docs.python.org/2/library/stdtypes.html#file.name –

3

os.path.abspath nên làm những gì bạn muốn, nếu tôi hiểu câu hỏi của bạn một cách chính xác.

+0

này hoạt động độc đáo nếu tôi vượt qua một chuỗi, nhưng tôi không biết làm thế nào để có được những con đường như chuỗi từ tập tin đối tượng của tôi :) – abcde123483

+2

@ulvund, Hãy thử điều này: file.name làm việc cho tập tin đối tượng –

+0

Ahh cảm ơn một tỷ triệu Nadia .. điều đó đã làm được điều đó. – abcde123483