Pergunta

Isso é algo que acho que seria muito útil.Basicamente, gostaria que houvesse uma maneira de editar o código-fonte do Python programaticamente sem exigir intervenção humana.Há algumas coisas que gostaria de fazer com isso:

  1. Edite a configuração de aplicativos Python que usam módulos de origem para configuração.

  2. Configure um "modelo" para que eu possa personalizar um arquivo de origem Python instantaneamente.Dessa forma, posso configurar um sistema de "projeto" em um aplicativo de código aberto no qual estou trabalhando e permitir que determinados arquivos sejam personalizados.

Eu provavelmente poderia escrever algo que pudesse fazer isso sozinho, mas posso ver que isso abre muitos problemas do tipo "o diabo está nos detalhes".Existe alguma maneira de fazer isso atualmente ou terei que aguentar e implementar sozinho?

Foi útil?

Solução

A biblioteca padrão do Python oferece recursos muito bons para trabalhar com código-fonte Python;Note o tokenizar e analisador módulos.

Outras dicas

A maioria desses tipos de coisas pode ser determinada programaticamente em Python, usando módulos como sys, os e o especial _arquivo_ identificador que informa onde você está no caminho do sistema de arquivos.

É importante ter em mente que quando um módulo é importado pela primeira vez ele executará tudo no escopo do arquivo, o que é importante para desenvolver comportamentos dependentes do sistema.Por exemplo, o módulo os basicamente determina qual sistema operacional você está usando na importação e então ajusta sua implementação de acordo (importando outro módulo correspondente a Linux, OSX, Windows, etc.).

Há muito poder nesse recurso e algo nesse sentido é provavelmente o que você está procurando.:)

[Editar] Eu também usei socket.gethostname() em alguns casos raros e hackeados.;)

Eu tive o mesmo problema e simplesmente abri o arquivo e fiz algumas substituições:em seguida, recarregue o arquivo no interpretador Python.Isso funciona bem e é fácil de fazer.

Caso contrário, AFAIK você terá que usar alguns objetos conf.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top