2012-05-07 2 views
8

Io uso argparse per ottenere un file da parte dell'utente:Come ottenere la directory di un file argparse in Python?

import argparse, os 
parser = argparse.ArgumentParser() 
parser.add_argument('file', type=file) 
args = parser.parse_args() 

allora voglio sapere la directory in cui il file è, qualcosa come:

print(os.path.abspath(os.path.dirname(args.inputfile))) 

Ma naturalmente, come args.inputfile è un file oggetto, questo non funziona. Come farlo?

+0

Si potrebbe semplicemente ottenere l'argomento come una stringa, quindi aprirlo in seguito. –

+0

@DavidRobinson Sì, questo è il modo semplice, ma voglio essere sicuro che non c'è niente di più intelligente da fare, dato che 'argparse' fornisce l'utile' tipo = file'. –

+1

Sono d'accordo, vale la pena chiedere. –

risposta

12

È possibile ottenere il nome del file dall'attributo .name e quindi passarlo a os.path.abspath. Ad esempio:

args = parser.parse_args() 
path = os.path.abspath(args.file.name) 
+0

Bello e facile, grazie! –