2012-03-03 6 views

答えて

76

ここでのキーは、開かれたファイルを表すfオブジェクトのname属性です。あなたはそれを得る:

>>> f = open('/Users/Desktop/febROSTER2012.xls') 
>>> f.name 
'/Users/Desktop/febROSTER2012.xls' 

それは役に立ちますか?

+3

'tempfile.TemporaryFile(モード=' w '、接頭辞=' xxx '、接尾辞=' .txt ')で作成されたファイルの場合は動作しません! – Victor

+8

@Victor:特に '[tempfile.NamedTemporaryFile'](http://docs.python.org/2/library/tempfile.html#tempfile.NamedTemporaryFile)の' tempfile'モジュールのドキュメントを読んでください。あなたが言及した 'tempfile.TemporaryFile'のドキュメンテーションです。これはテンポラリファイルの特定のケースであり、ドキュメントに見られるように、既存のソリューションが既に存在します。 'tempfile.TemporaryFile'は、名前を読みたい場合に使用するためのものではありません。 – Tadeck

+5

open( 'foo.txt'、 'w')を使用してファイルを作成してからf.nameを実行すると、foo.txtという出力しか得られません。 – searchengine27

6

ディレクトリ名を取得したいだけで、ファイル名が必要ない場合は、os Pythonモジュールを使用して、従来の方法でそれを行うことができます。

>>> import os 
>>> f = open('/Users/Desktop/febROSTER2012.xls') 
>>> os.path.dirname(f.name) 
>>> '/Users/Desktop/' 

このようにして、ディレクトリ構造を取得できます。

+0

'f = open( 'febROSTER2012.xls')'を使用すると空文字列を返します。どうすれば完全な道に進むことができますか? – NZD

+1

@NZD:http://stackoverflow.com/a/38867035/1587329を参照してください。 –

34

私は全く同じ問題を抱えていました。相対パスを使用している場合、os.path.dirname(path)は相対パスのみを返します。

>>> import os 
>>> f = open('file.txt') 
>>> os.path.realpath(f.name) 
+5

これは実際には本当の答えです。 – BlueTrin

0

ます。また、このようにそれを取得することができます:os.path.realpathは、トリックを行います。

filepath = os.path.abspath(f.name) 
関連する問題