Antworten:
Der Schlüssel hier ist das nameAttribut des fObjekts, das die geöffnete Datei darstellt. Sie bekommen es so:
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> f.name
'/Users/Desktop/febROSTER2012.xls'
Hilft es?
tempfileModuls, insbesondere für tempfile.NamedTemporaryFile, direkt unter der Dokumentation, die tempfile.TemporaryFileSie erwähnt haben. Dies ist ein spezieller Fall für temporäre Dateien, und wie in den Dokumenten zu sehen ist, gibt es bereits eine Lösung. tempfile.TemporaryFileist nicht für den Fall gedacht, dass Sie den Namen lesen möchten.
Ich hatte genau das gleiche Problem. Wenn Sie einen relativen Pfad verwenden, gibt os.path.dirname (Pfad) nur den relativen Pfad zurück. os.path.realpath macht den Trick:
>>> import os
>>> f = open('file.txt')
>>> os.path.realpath(f.name)
os.path.realpathändere , wird '~ / text.txt' anstelle von '~ / Documents / text.txt' zurückgegeben.
Und wenn Sie nur den Verzeichnisnamen abrufen möchten und den dazugehörigen Dateinamen nicht benötigen, können Sie dies mit dem osPython-Modul auf die folgende herkömmliche Weise tun .
>>> import os
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> os.path.dirname(f.name)
>>> '/Users/Desktop/'
Auf diese Weise können Sie die Verzeichnisstruktur abrufen.
f = open('febROSTER2012.xls'). Wie können Sie den vollen Weg erreichen?
Sie können es auch so bekommen.
filepath = os.path.abspath(f.name)
tempfile.TemporaryFile(mode='w', prefix='xxx', suffix='.txt')funktioniert nicht!