Respostas:
A chave aqui é o name
atributo do f
objeto que representa o arquivo aberto. Você entende assim:
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> f.name
'/Users/Desktop/febROSTER2012.xls'
Ajuda?
tempfile
módulo, especialmente para tempfile.NamedTemporaryFile
, logo abaixo da documentação para tempfile.TemporaryFile
você mencionou. Este é o caso específico do arquivo temporário e, conforme visto na documentação, já existe uma solução. tempfile.TemporaryFile
não deve ser usado caso você queira ler o nome.
Eu tinha exatamente o mesmo problema. Se você estiver usando um caminho relativo, os.path.dirname (path) retornará apenas o caminho relativo. os.path.realpath faz o truque:
>>> import os
>>> f = open('file.txt')
>>> os.path.realpath(f.name)
os.path.realpath
retornarei '~ / text.txt' em vez de '~ / Documents / text.txt'.
E se você quiser apenas obter o nome do diretório e não precisar do nome do arquivo com ele, você pode fazer isso da seguinte maneira convencional usando o os
módulo Python.
>>> import os
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> os.path.dirname(f.name)
>>> '/Users/Desktop/'
Dessa forma, você pode obter a estrutura do diretório.
f = open('febROSTER2012.xls')
. Como você pode chegar ao caminho completo?
Você pode conseguir assim também.
filepath = os.path.abspath(f.name)
tempfile.TemporaryFile(mode='w', prefix='xxx', suffix='.txt')
não funciona!