¿Cómo abrir un archivo usando argparse?

Quiero abrir el archivo para leer usando argparse. En cmd debe verse como: my_program.py / filepath

Ese es mi bash:

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

El tipo de argumento debe ser una cadena (que de todos modos es la predeterminada). Así que hazlo así:

 parser = argparse.ArgumentParser() parser.add_argument('filename') args = parser.parse_args() with open(args.filename) as file: # do stuff here 

Eche un vistazo a la documentación: http://docs.python.org/2/library/argparse.html#type

 import argparse parser = argparse.ArgumentParser() parser.add_argument('file', type=argparse.FileType('r')) args = parser.parse_args() print args.file.readlines() 

Para que el archivo se cierre correctamente, puede combinar argparse.FileType con la statement “with”

 # .... parser.add_argument('file', type=argparse.FileType('r')) args = parser.parse_args() with args.file as file: print file.read() 

— actualización —

Oh, @Wernight ya lo dijo en los comentarios.

Esta implementación permite que el parámetro “nombre de archivo” sea opcional, así como una breve descripción si y cuando el usuario ingresa el argumento -h o --help .

 parser = argparse.ArgumentParser(description='Foo is a program that does things') parser.add_argument('filename', nargs='?') args = parser.parse_args() if args.filename is not None: print('The file name is {}'.format(args.filename)) else: print('Oh well ; No args, no problems')