Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

414
Views
Python argparse: args no tiene función de atributo

Introducción

Soy un problema para un proyecto escolar. Estoy haciendo un traje de prueba y necesito bot una interfaz de generación de configuración y un corredor de prueba. Para eso usé la biblioteca argparse y dos run cgi y ejecuté

El problema en sí

Así que aquí está la sección de código que falla:

 def CGI(args): print("CGI: Work In Progress") exit(0) def runTest(args): print("Run: Work in Progress") exit(0) parser = argparse.ArgumentParser() subparser = parser.add_subparsers() cgi = subparser.add_parser("cgi", help="CSV Generator Interface") run = subparser.add_parser("run", help="Test running") verbosity = parser.add_argument_group("Verbosity").add_mutually_exclusive_group() check = run.add_argument_group("Checks") # Arguments #Run parser run.set_defaults(func=runTest) # Run argument declaration ... # Verbosity argument declaration ... # Check argument declaration ... #CGI cgi.set_defaults(func=CGI) args = parser.parse_args() args.func(args) # Error is here

Cada vez que ejecuto este código tengo el siguiente error:

 File "/home/thor/Projects/EPITA/TC/test/test.py", line 44, in main args.func(args) AttributeError: 'Namespace' object has no attribute 'func'

Versión de Python

 $ python -V Python 3.6.4

versión Argparse

 $ pip show argparse Name: argparse Version: 1.4.0 Summary: Python command-line parsing library Home-page: https://github.com/ThomasWaldmann/argparse/ Author: Thomas Waldmann Author-email: tw@waldmann-edv.de License: Python Software Foundation License Location: /usr/lib/python3.6/site-packages Requires:

EDITAR

Si instalo argparse manualmente, funciona sudo pip install argparse . Pero, ¿hay alguna solución nativa? No estoy seguro de que funcione en las computadoras de la escuela (no podemos instalar paquetes)

EDITAR 2

OK, mi error, he sido un completo idiota, no reescribí mi script en ejecución, así que olvidé ingresar run o cgi

Gracias por leer mi mensaje y por su futura ayuda :)

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Este es un error conocido en la versión Python 3 de argparse ( https://bugs.python.org/issue16308 ). En Python 2, si se llama al script sin ningún tipo de argumento (es decir, sin subcomando), sale limpiamente con "error: muy pocos argumentos". En Python3, sin embargo, obtienes un AttributeError no controlado. Afortunadamente, la solución es bastante sencilla:

 try: func = args.func except AttributeError: parser.error("too few arguments") func(args)
over 4 years ago · Santiago Trujillo Report

0

parser = ArgumentParser() parser.set_defaults(func=lambda args: parser.print_help())

en mi humilde opinión, mejor que intentar ... excepto

over 4 years ago · Santiago Trujillo Report

0

Otra solución podría ser:

 if len(args.__dict__) <= 1: # No arguments or subcommands were given. parser.print_help() parser.exit()
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!