Если у меня есть открытый файл, есть ли os
вызов для получения полного пути в виде строки?
f = open('/Users/Desktop/febROSTER2012.xls')
Откуда f
мне получить "/Users/Desktop/febROSTER2012.xls"
?
Ключевым моментом здесь является name
атрибут f
объекта, представляющего открытый файл. Вы понимаете это так:
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> f.name
'/Users/Desktop/febROSTER2012.xls'
Помогает?
tempfile.TemporaryFile(mode='w', prefix='xxx', suffix='.txt')
не работает!tempfile
модуля, особенно для упомянутой вамиtempfile.NamedTemporaryFile
документацииtempfile.TemporaryFile
. Это особый случай для временного файла, и, как видно из документации, решение уже существует.tempfile.TemporaryFile
не предназначен для использования в случае, если вы хотите прочитать имя.f = open('some/relative/path')
, а затем измените рабочий каталог, напримерos.chdir('somewhere/esle')
, тоf.name
он не будет обновляться соответствующим образом и не будет иметь смысла в вашем текущем рабочем каталоге.У меня была такая же проблема. Если вы используете относительный путь, os.path.dirname (path) вернет только относительный путь. os.path.realpath делает свое дело:
источник
os.path.realpath
вернет '~ / text.txt' вместо '~ / Documents / text.txt'.И если вы просто хотите получить имя каталога, а не имя файла, идущее с ним, вы можете сделать это следующим обычным способом, используя
os
модуль Python.Таким образом, вы можете получить структуру каталогов.
источник
f = open('febROSTER2012.xls')
. Как пройти полный путь?Вы можете получить это и так.
источник