2009-12-10 10 views
5

私が使用しています:tkFileDialogを使ってファイルの絶対パスを取得するには?

file = tkFileDialog.askopenfile(parent=root, mode='rb', 
     filetypes=[('Subrip Subtitle File','*.srt')], title='Choose a subtitle file') 

をユーザーが指定したファイルオブジェクトを取得します。

ファイルオブジェクトからこのファイルの絶対パスを取得する方法はありますか。

答えて

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

これは、2つの行の間に 'os.chdir()'コールがない限り動作します。ですから、この質問の場合はおそらく問題ありませんが、完璧ではありません。私はそれをする方法を考えることができませんが、それは常に私の頭の上から働くでしょう。 –

+0

os.chdir()をGUIアプリケーションで使用する正当な理由はわかりません - 少なくとも、スレッドも使用するものではなく、それはchdir()の呼び出しを "唯一の方法"あなたがコントロールするソースの2行。 –

+0

このアプローチは信頼できるのですか?ファイルオブジェクトの.name属性の説明では、Pythonのドキュメントは次のように言っています: "これは読み取り専用の属性であり、すべてのファイルライクなオブジェクトには存在しないかもしれません。参照:https://docs.python.org/2/library/stdtypes.html#file.name –

3

os.path.abspath私はあなたの質問を正しく理解していれば、あなたがしたいことをするはずです。

+0

私は文字列を渡す場合、これはうまく動作しますが、私は私のファイルオブジェクト:) – abcde123483

+2

@ulvundから文字列としてパスを取得する方法がわからない、このお試しください:file.nameは、ファイルのために働く –

+0

ああオブジェクト10億人のナディアに感謝しています。 – abcde123483

関連する問題