2012-03-03 14 views

Odpowiedz

76

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?

+3

Dla plików utworzonych przez: 'tempfile.TemporaryFile (mode = 'w', prefix = 'xxx', suffix = '. Txt')' nie działa! – Victor

+8

@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

+5

Jeśli utworzysz plik przy pomocy open ('foo.txt', 'w'), a następnie wykonaj f.name, to dostarczysz tylko wyjście foo.txt – searchengine27

6

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.

+0

Zwraca pusty łańcuch, jeśli użyjesz 'f = open ('febROSTER2012.xls')'. Jak dojść do pełnej ścieżki? – NZD

+1

@NZD: patrz http://stackoverflow.com/a/38867035/1587329 –

34

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) 
+5

To jest właściwie prawdziwa odpowiedź. – BlueTrin

0

można je dostać w ten sposób również.

filepath = os.path.abspath(f.name) 
Powiązane problemy