passa argumentos para o programa python no shell

1

Não consigo executar o script python em um script de shell. A seguir está o arquivo script.sh, no qual 3 argumentos estão sendo passados para o script python.

python main.py 1.0 0.1 10

O programa python não está lendo os argumentos. Quando a mesma linha é executada no terminal de linha de comando, ela é executada corretamente.

< < > > Acabei de verificar isso definindo os argumentos em main.py codificados e executando o comando sem argumentos. Ainda não funciona. O main.py está usando alguns outros arquivos que também estão localizados no mesmo diretório. Além disso, o script também está localizado no mesmo diretório.

    
por hasnain rehman 12.06.2016 / 09:03

1 resposta

1

Do SyntaxError que você colou, parece que você está executando o script com a versão errada do python, especificamente o Python 2 em vez do Python 3 (porque o SyntaxError pode estar reclamando das anotações, que existem apenas no Python 3 ).

Se você realmente leu o erro, pode ver que isso realmente não tem nada a ver com a passagem de argumentos (o título da sua pergunta).

A solução correta é não invocar o script prefixando-o com o nome do interpretador, mas para permitir que invoque seu próprio interpretador:

./main.py 1.0 0.1 10

em vez de

python main.py 1.0 0.1 10

Se estiver escrito corretamente, o script terá uma linha shebang no início que especifica qual interpretador ele precisa ser executado, e isso será python3 ou algo semelhante.

Ao permitir que o script especifique seu próprio interpretador, o script de chamada não precisa saber ou se importar com qual interpretador é necessário. O script pode até mesmo ser reescrito para usar uma linguagem completamente diferente (ou pode ser substituído por um binário compilado que não seja um script) e os chamadores não precisam ser modificados para chamá-lo de forma diferente.

    
por 12.06.2016 / 17:27

Tags