回答:
ここで重要なのは、開かれたファイルを表すオブジェクトのname属性fです。あなたはそれをそのように得る:
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> f.name
'/Users/Desktop/febROSTER2012.xls'
それは役に立ちますか?
tempfile、特にのモジュールのドキュメントをお読みください。これは一時ファイルの特定のケースであり、ドキュメントに見られるように、すでに既存の解決策があります。名前を読みたい場合に使用するためのものではありません。tempfile.NamedTemporaryFiletempfile.TemporaryFiletempfile.TemporaryFile
私はまったく同じ問題を抱えていました。相対パスを使用している場合、os.path.dirname(path)は相対パスのみを返します。os.path.realpathはトリックを行います:
>>> import os
>>> f = open('file.txt')
>>> os.path.realpath(f.name)
os.path.realpathすると、 '〜/ Documents / text.txt'ではなく '〜/ text.txt'が返されます。
あなたもこのようにそれを得ることができます。
filepath = os.path.abspath(f.name)
tempfile.TemporaryFile(mode='w', prefix='xxx', suffix='.txt')機能しません!