Jawaban:
Kuncinya di sini adalah name
atribut f
objek yang mewakili file yang dibuka. Anda mendapatkannya seperti itu:
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> f.name
'/Users/Desktop/febROSTER2012.xls'
Apakah itu membantu?
tempfile
modul, khusus untuk tempfile.NamedTemporaryFile
, tepat di bawah dokumentasi yang tempfile.TemporaryFile
Anda sebutkan. Ini adalah kasus khusus untuk file sementara dan, seperti yang terlihat di dokumen, sudah ada solusi. tempfile.TemporaryFile
tidak 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.realpath
akan 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 os
modul 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!