Jeśli mam otwarty plik, czy istnieje os
wezwanie do uzyskania pełnej ścieżki w postaci ciągu?
f = open('/Users/Desktop/febROSTER2012.xls')
Od f
, jak mam dostać "/Users/Desktop/febROSTER2012.xls"
?
Kluczem jest tutaj name
atrybut f
obiektu reprezentującego otwarty plik. Otrzymujesz to w ten sposób:
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> f.name
'/Users/Desktop/febROSTER2012.xls'
Czy to pomaga?
tempfile.TemporaryFile(mode='w', prefix='xxx', suffix='.txt')
nie działa!tempfile
modułu, zwłaszcza dlatempfile.NamedTemporaryFile
, tuż poniżej wspomnianej dokumentacjitempfile.TemporaryFile
. Jest to specyficzny przypadek dla pliku tymczasowego i, jak widać w dokumentacji, istnieje już rozwiązanie.tempfile.TemporaryFile
nie jest przeznaczone do użycia w przypadku, gdy chcesz odczytać nazwę.f = open('some/relative/path')
, a następnie zmienisz katalog roboczy, na przykłados.chdir('somewhere/esle')
,f.name
nie zaktualizuje się odpowiednio i nie będzie miało sensu w twoim bieżącym katalogu roboczym.Miałem dokładnie ten sam problem. Jeśli używasz ścieżki względnej, os.path.dirname (ścieżka) zwróci tylko ścieżkę względną. os.path.realpath załatwia sprawę :
źródło
os.path.realpath
zwróci „~ / text.txt” zamiast „~ / Documents / text.txt”.A jeśli chcesz tylko uzyskać nazwę katalogu i nie potrzebujesz dołączonej do niego nazwy pliku, możesz to zrobić w następujący konwencjonalny sposób za pomocą
os
modułu Python.W ten sposób możesz przejąć strukturę katalogów.
źródło
f = open('febROSTER2012.xls')
. Jak dotrzeć do pełnej ścieżki?Możesz to również uzyskać w ten sposób.
źródło