2012-03-03 18 views

risposta

76

La chiave qui è l'attributo name dell'oggetto f che rappresenta il file aperto. È così:

>>> f = open('/Users/Desktop/febROSTER2012.xls') 
>>> f.name 
'/Users/Desktop/febROSTER2012.xls' 

Aiuta?

+3

Per i file creati da: 'tempfile.TemporaryFile (mode = 'w', prefix = 'xxx', suffix = '. Txt')' non funziona! – Victor

+8

@Victor: leggere la documentazione del modulo 'tempfile', in particolare per [' tempfile.NamedTemporaryFile'] (http://docs.python.org/2/library/tempfile.html#tempfile.NamedTemporaryFile), appena sotto il documentazione per 'tempfile.TemporaryFile' di cui hai parlato. Questo è il caso specifico del file temporaneo e, come si vede nei documenti, esiste già una soluzione. 'tempfile.TemporaryFile' non è pensato per essere usato nel caso in cui si voglia leggere il nome. – Tadeck

+5

Se si crea un file usando open ('foo.txt', 'w') e quindi f.name, fornisce solo l'output foo.txt – searchengine27

6

E se si desidera semplicemente ottenere il nome della directory e non è necessario il nome del file che lo accompagna, è possibile farlo nel seguente modo convenzionale utilizzando il modulo Python os.

>>> import os 
>>> f = open('/Users/Desktop/febROSTER2012.xls') 
>>> os.path.dirname(f.name) 
>>> '/Users/Desktop/' 

In questo modo è possibile ottenere la struttura della directory.

+0

Restituisce una stringa vuota se si utilizza 'f = open ('febROSTER2012.xls')'. Come puoi arrivare al percorso completo? – NZD

+1

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

34

Ho avuto lo stesso identico problema. Se si sta utilizzando un percorso relativo os.path.dirname (percorso) restituirà solo il percorso relativo. os.path.realpath fa il trucco:

>>> import os 
>>> f = open('file.txt') 
>>> os.path.realpath(f.name) 
+5

Questa è in realtà la vera risposta. – BlueTrin

0

si può ottenere in questo modo anche.

filepath = os.path.abspath(f.name) 
Problemi correlati