Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

118
Visualizações
Javascript argparse con configuración JSON

Estoy tratando de integrar argparse en mi programa Javascript, de modo que todos los argumentos se puedan cargar desde un archivo de configuración externo, y luego esos valores se pueden anular con los argumentos CLI proporcionados posteriormente. Para hacer esto, decidí leer un archivo de configuración y analizarlo en un objeto JSON, luego iterar a través de las claves y establecer los valores predeterminados en el analizador, y finalmente analizar los argumentos CLI restantes para anular los valores predeterminados. Desafortunadamente, estoy recuperando un comportamiento extraño, y dado que es un puerto del repositorio de Python, no hay mucha documentación relevante sintácticamente ( https://www.npmjs.com/package/argparse )

Tengo la siguiente lógica:

 //readFile helper method not shown const configArgs = JSON.parse(readFile('config.json')) for (let key in configArgs) { let value = configArgs[key] //used for debugging console.log(`${key}: ${value}`) parser.set_defaults({key: value}) } var args = parser.parse_args() //used for debugging console.log(args)

Sin embargo, parece que la línea parser.set_defaults() no funciona correctamente:

 path: ../data/testInput.txt json: ../build/testSet.json name: foo.txt output: output.txt Namespace(path=undefined, json=undefined, name=undefined, output=undefined, key='output.txt')

¿Por qué está tratando de crear una nueva "clave" de opción de configuración, aunque la key pasada a set_defaults() es una variable y tiene un valor nuevo cada vez que se registra en la consola?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Contribuí a este repositorio hace años, pero no he trabajado con él ni con javascript recientemente.

En python argparse , creo que esto es lo que quieres hacer:

 In [27]: conf = {'path': '../data/testInput.txt', ...: 'json': '../build/testSet.json', ...: 'name': 'foo.txt', ...: 'output': 'output.txt'} In [28]: parser = argparse.ArgumentParser() In [29]: for k in conf.keys(): ...: print(k,conf[k]) ...: parser.set_defaults(**{k:conf[k]}) ...: path ../data/testInput.txt json ../build/testSet.json name foo.txt output output.txt In [30]: parser.parse_args([]) Out[30]: Namespace(path='../data/testInput.txt', json='../build/testSet.json', name='foo.txt', output='output.txt')

o simplemente configure todas las teclas a la vez:

 In [31]: parser = argparse.ArgumentParser() In [32]: parser.set_defaults(**conf) In [33]: parser.parse_args([]) Out[33]: Namespace(path='../data/testInput.txt', json='../build/testSet.json', name='foo.txt', output='output.txt')

En Python (**conf) es equivalente a (path='..data...', json='../build', etc) .

La acción de set_defaults es agregar al atributo _defaults :

 In [34]: parser._defaults Out[34]: {'path': '../data/testInput.txt', 'json': '../build/testSet.json', 'name': 'foo.txt', 'output': 'output.txt'}

El código de Python es:

 def set_defaults(self, **kwargs): self._defaults.update(kwargs) # and set defaults of actions if any

El código javascript correspondiente es:

 set_defaults(kwargs) { Object.assign(this._defaults, kwargs) # and set action.default if any

No recuerdo suficiente javascript para decir si eso es correcto o no.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda