Estou usando 2 scripts separados Scale1.py
e Scale2.py
. Para executá-los, eu entro sudo python Scale1.py
ou sudo python Scale2.py
na linha de comando do terminal. Eu gostaria de ter uma linha no Scale2.py
script em que, se eu pressionar um botão, o programa seja interrompido e executado Scale1.py
. Algo assim, que não funciona.
if GPIO.input(23) == False:
break(sudo python Scale1.py)
os.system()
foi privado em favor desubprocess
, consulte stackoverflow.com/a/4256153/4212158Em geral, use o módulo de subprocesso
para chamadas de linha de comando.
Um exemplo de processamento do resultado de uma chamada de subprocesso;
O subprocesso substitui vários módulos e funções mais antigos, como os.system e os.spawn . Ele faz um bom trabalho na limpeza de argumentos, para protegê-lo da injeção de shell .
https://docs.python.org/2/library/subprocess.html
Obviamente, para executar um segundo script python, não há necessidade de chamada da CLI, você pode importá-los.
fonte
subprocess
poderia ser melhor no meu caso também.Você pode usar o sudo como sugerido por harry sib, mas seria necessário adicionar o usuário executando o primeiro script ao arquivo sudoers .
A melhor maneira de executar um script python a partir de outro script python é importá-lo. Você deve ter a lógica do seu script em um método no segundo script:
fonte
cleanest
resposta.