Jeśli mam otwarty plik, czy jest wywołanie os
, aby uzyskać pełną ścieżkę jako ciąg?Uzyskaj ścieżkę z otwartego pliku w Pythonie
f = open('/Users/Desktop/febROSTER2012.xls')
Od f
, w jaki sposób uzyskać "/Users/Desktop/febROSTER2012.xls"
?
Jeśli mam otwarty plik, czy jest wywołanie os
, aby uzyskać pełną ścieżkę jako ciąg?Uzyskaj ścieżkę z otwartego pliku w Pythonie
f = open('/Users/Desktop/febROSTER2012.xls')
Od f
, w jaki sposób uzyskać "/Users/Desktop/febROSTER2012.xls"
?
Kluczem jest tutaj atrybut name
obiektu f
reprezentujący otwarty plik. Otrzymujesz to w ten sposób:
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> f.name
'/Users/Desktop/febROSTER2012.xls'
Czy to pomaga?
A jeśli po prostu chcesz uzyskać nazwę katalogu i nie potrzebujesz nazwy pliku, możesz to zrobić w następujący konwencjonalny sposób przy użyciu modułu Python os
.
>>> import os
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> os.path.dirname(f.name)
>>> '/Users/Desktop/'
W ten sposób można uzyskać dostęp do struktury katalogów.
Zwraca pusty łańcuch, jeśli użyjesz 'f = open ('febROSTER2012.xls')'. Jak dojść do pełnej ścieżki? – NZD
@NZD: patrz http://stackoverflow.com/a/38867035/1587329 –
Miałem dokładnie ten sam problem. Jeśli używasz względnej ścieżki, os.path.dirname (path) zwróci tylko względną ścieżkę. os.path.realpath załatwia sprawę:
>>> import os
>>> f = open('file.txt')
>>> os.path.realpath(f.name)
To jest właściwie prawdziwa odpowiedź. – BlueTrin
można je dostać w ten sposób również.
filepath = os.path.abspath(f.name)
Dla plików utworzonych przez: 'tempfile.TemporaryFile (mode = 'w', prefix = 'xxx', suffix = '. Txt')' nie działa! – Victor
@Victor: Przeczytaj dokumentację modułu 'tempfile', szczególnie dla [' tempfile.NamedTemporaryFile'] (http://docs.python.org/2/library/tempfile.html#tempfile.NamedTemporaryFile), tuż pod dokumentacja dla 'tempfile.TemporaryFile', o której wspomniałeś. Jest to szczególny przypadek dla pliku tymczasowego i, jak widać w dokumentach, istnieje już istniejące rozwiązanie. 'tempfile.TemporaryFile' nie jest przeznaczony do użycia w przypadku, gdy chcesz przeczytać nazwę. – Tadeck
Jeśli utworzysz plik przy pomocy open ('foo.txt', 'w'), a następnie wykonaj f.name, to dostarczysz tylko wyjście foo.txt – searchengine27