Відповіді:
Ключовим тут є nameатрибут fоб’єкта, що представляє відкритий файл. Ви отримуєте це так:
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> f.name
'/Users/Desktop/febROSTER2012.xls'
Чи допомагає це?
tempfileмодуля, особливо для tempfile.NamedTemporaryFile, трохи нижче tempfile.TemporaryFileзгаданої вами документації . Це конкретний випадок для тимчасового файлу, і, як видно з документів, вже існує рішення. tempfile.TemporaryFileне призначений для використання в тому випадку, якщо ви хочете прочитати ім'я.
У мене було саме таке питання. Якщо ви використовуєте відносний шлях os.path.dirname (шлях) поверне лише відносний шлях. os.path.realpath робить трюк:
>>> import os
>>> f = open('file.txt')
>>> os.path.realpath(f.name)
os.path.realpathповерне "~ / text.txt" замість "~ / Documents / text.txt".
І якщо ви просто хочете отримати ім'я каталогів і немає необхідності в імені файлу, що йде разом з ним, тоді ви можете зробити це наступним звичайним способом, використовуючи osмодуль Python.
>>> import os
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> os.path.dirname(f.name)
>>> '/Users/Desktop/'
Таким чином ви можете отримати власну структуру каталогів.
f = open('febROSTER2012.xls'). Як можна дістатись до повного шляху?
Ви можете отримати це також.
filepath = os.path.abspath(f.name)
tempfile.TemporaryFile(mode='w', prefix='xxx', suffix='.txt')не працює!