2010-08-07 12 views
417

Desidero ottenere il percorso della directory del file corrente.
ho provato:Come ottenere il percorso completo della directory del file corrente in Python?

>>> os.path.abspath(__file__) 
'C:\\python27\\test.py' 

ma come posso recuperare il percorso della directory? Per esempio:

'C:\\python27\\' 
+3

possibile duplicato del [Trova directory corrente e la directory del file] (http: // StackOverflow .com/questions/5137497/find-current-directory-and-files-directory) – user2284570

+4

'__file__' non è definito quando si esegue python come shell interattiva. Il primo pezzo di codice nella tua domanda sembra provenire da una shell interattiva, ma in realtà produrrebbe un 'NameError', almeno su python 2.7.3, ma anche altri lo immagino. – drevicko

risposta

889

Se vuoi dire la directory dello script in esecuzione:

import os 
os.path.dirname(os.path.abspath(__file__)) 

Se vuoi dire la directory di lavoro corrente:

import os 
os.getcwd() 

Si noti che prima e dopo file sono due underscore, non solo uno.

+29

abspath() è obbligatorio se non vuoi scoprire comportamenti strani su Windows, dove dirname (__ file__) può restituire una stringa vuota! – sorin

+4

dovrebbe essere os.path.dirname (os.path.abspath (os .__ file__))? – DrBailey

+1

@drbailey: no. Cosa ti fa pensare che dovrebbe? –

7
import os 
print os.path.dirname(__file__) 
+18

Spiacente ma questa risposta non è corretta, quella corretta è quella di Bryan 'dirname (abspath (__ file__)). Vedi i commenti per i dettagli. – sorin

+1

Fornirà '/' come output – Tripathi29

4

È possibile utilizzare os e os.path biblioteca facilmente come segue

import os 
os.chdir(os.path.dirname(os.getcwd())) 

os.path.dirname rendimenti directory superiore di quello attuale. Ci consente di passare a un livello superiore senza passare alcun argomento di file e senza conoscere il percorso assoluto.

+4

Ciò non fornisce la directory dell'attuale _file_. Restituisce la directory della directory di lavoro corrente che potrebbe essere completamente diversa. Quello che suggerisci funziona solo se il file si trova nella directory di lavoro corrente. –

0

IPython ha un comando magico %pwd per ottenere la directory di lavoro corrente. Può essere utilizzato in modo seguente:

from IPython.terminal.embed import InteractiveShellEmbed 

ip_shell = InteractiveShellEmbed() 

present_working_directory = ip_shell.magic("%pwd") 

Su IPython Jupyter Notebook %pwd può essere utilizzato direttamente come segue:

present_working_directory = %pwd 
Problemi correlati