Jawaban:
Kuncinya di sini adalah nameatribut fobjek yang mewakili file yang dibuka. Anda mendapatkannya seperti itu:
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> f.name
'/Users/Desktop/febROSTER2012.xls'
Apakah itu membantu?
tempfilemodul, khusus untuk tempfile.NamedTemporaryFile, tepat di bawah dokumentasi yang tempfile.TemporaryFileAnda sebutkan. Ini adalah kasus khusus untuk file sementara dan, seperti yang terlihat di dokumen, sudah ada solusi. tempfile.TemporaryFiletidak dimaksudkan untuk digunakan jika Anda ingin membaca namanya.
Saya memiliki masalah yang sama persis. Jika Anda menggunakan jalur relatif os.path.dirname (jalur) hanya akan mengembalikan jalur relatif. os.path.realpath melakukan trik:
>>> import os
>>> f = open('file.txt')
>>> os.path.realpath(f.name)
os.path.realpathakan mengembalikan '~ / text.txt' alih-alih '~ / Documents / text.txt'.
Dan jika Anda hanya ingin mendapatkan nama direktori dan tidak perlu nama file yang menyertainya, maka Anda dapat melakukannya dengan cara konvensional berikut menggunakan osmodul Python.
>>> import os
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> os.path.dirname(f.name)
>>> '/Users/Desktop/'
Dengan cara ini Anda bisa mendapatkan struktur direktori.
f = open('febROSTER2012.xls'). Bagaimana Anda bisa mencapai jalur lengkap?
Anda juga bisa mendapatkannya seperti ini.
filepath = os.path.abspath(f.name)
tempfile.TemporaryFile(mode='w', prefix='xxx', suffix='.txt')tidak berfungsi!