Executando scripts em Python consecutivamente

1. Executando scripts em Python consecutivamente

Claudio Pessoa
claupessoa

(usa Linux Mint)

Enviado em 20/06/2021 - 00:30h

Conheço o linux há um tempo e sei que existem diversas ferramentas quando usamos o terminal (chamo de ferramentas aquelas letras que acompanham os comandos). Gostaria de saber se existe alguma forma de executar um primeiro script em Python e na hora de executar o segundo script, usar as mesmas variáveis do primeiro. Estou usando isso para data science, mas vou escrever um exemplo bem curto usando a mesma ideia do que eu estou trabalhando: contar os picos de um gráfico e utilizar os pontos para realizar alguns cálculos, como o gráfico é de um sinal ruidoso preciso pegar os pontos manualmente. Não entendo pq não funciona usar apenas um programa, mas se escrevo tudo em um único programa ele simplesmente não salva os pontos. Deixei em negrito no segundo programa as variáveis que eu preciso 'reutilizar' do programa1. Espero que possam me ajudar.
-programa1.py: coloco em gráficos os dados obtidos em laboratório

import numpy as np
import matplotlib.pyplot as plt
picos = []
for i in range(1,5):
w = 2*np.pi*i*i
title = str(round(w))
x = np.linspace(0,10*np.pi,20000)
y = np.sin(w*x)
plt.figure(title)
plt.plot(x, y, 'r-', label=')

-programa2.py: clico em cada pico do sinal e salvo na lista picos, para depois escrever em um arquivo e poder calcular o que é de interesse
[code]
def desenho(event):
# Faz um quadrado azul no ponto que foi clicado
tb = plt.get_current_fig_manager().toolbar
if event.button==1 and event.inaxes and tb.mode == '':
p,q = event.xdata,event.ydata
plt.plot([p],[q],'bs')
plt.draw()
def salvando(event):
# Salva os dados na lista 'picos'
global picos
ind = event.ind
a = np.take(x,ind)[0]
picos = np.append(picos,[int(a)])
plt.figure(title).canvas.mpl_connect('pick_event', salvando)
plt.figure(title).canvas.mpl_connect('button_press_event', desenho)
plt.tight_layout()
plt.show()
picos = np.array(sorted(set(picos)))
nome = '/home/user/'+ SINALBASE[11:21]+'/' + SINALBASE[16:21] + '.csv'
arquivo = open(nome,'a')
for i in range(len(picos)):
if i == len(picos)-1:
dale = str(int(picos[i]-I0))+'\n'
else:
dale = str(picos[i]-I0)+','
arquivo.write(dale)
[\code]

Desde já, agradeço


  


2. Re: Executando scripts em Python consecutivamente

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 20/06/2021 - 20:13h


claupessoa escreveu:

Conheço o linux há um tempo e sei que existem diversas ferramentas quando usamos o terminal (chamo de ferramentas aquelas letras que acompanham os comandos). Gostaria de saber se existe alguma forma de executar um primeiro script em Python e na hora de executar o segundo script, usar as mesmas variáveis do primeiro. Estou usando isso para data science, mas vou escrever um exemplo bem curto usando a mesma ideia do que eu estou trabalhando: contar os picos de um gráfico e utilizar os pontos para realizar alguns cálculos, como o gráfico é de um sinal ruidoso preciso pegar os pontos manualmente. Não entendo pq não funciona usar apenas um programa, mas se escrevo tudo em um único programa ele simplesmente não salva os pontos. Deixei em negrito no segundo programa as variáveis que eu preciso 'reutilizar' do programa1. Espero que possam me ajudar.
-programa1.py: coloco em gráficos os dados obtidos em laboratório

import numpy as np
import matplotlib.pyplot as plt
picos = []
for i in range(1,5):
w = 2*np.pi*i*i
title = str(round(w))
x = np.linspace(0,10*np.pi,20000)
y = np.sin(w*x)
plt.figure(title)
plt.plot(x, y, 'r-', label=')

-programa2.py: clico em cada pico do sinal e salvo na lista picos, para depois escrever em um arquivo e poder calcular o que é de interesse.

# Código de interação com o gráfico.
def desenho(event):
# Faz um quadrado azul no ponto que foi clicado
tb = plt.get_current_fig_manager().toolbar
if event.button==1 and event.inaxes and tb.mode == '':
p,q = event.xdata,event.ydata
plt.plot([p],[q],'bs')
plt.draw()
def salvando(event):
# Salva os dados na lista 'picos'
global picos
ind = event.ind
a = np.take(x,ind)[0]
picos = np.append(picos,[int(a)])
plt.figure(title).canvas.mpl_connect('pick_event', salvando)
plt.figure(title).canvas.mpl_connect('button_press_event', desenho)
plt.tight_layout()
plt.show()
# %%
picos = np.array(sorted(set(picos)))
nome = '/home/user/'+ SINALBASE[11:21]+'/' + SINALBASE[16:21] + '.csv'
arquivo = open(nome,'a')
for i in range(len(picos)):
if i == len(picos)-1:
dale = str(int(picos[i]-I0))+'\n'
else:
dale = str(picos[i]-I0)+','
arquivo.write(dale)
[\code]

Desde já, agradeço


Boa noite claupessoa.
Pouco conheço sobre o Python, acredito que tenha "algo" semelhante.
No bash utilizo o "export".
Exemplo: bash script
---------------------------------------------------------------------------------------------------------------
Script01.sh
[code]#!/usr/bin/env bash
am="\e[1;33m";fc="\e[m";
linha=$(printf "%20s"|sed 's/ /─/g')
export count;export max=5;export linha;
let count++;
((${count}==1)) && printf "\x1bc"
printf "\n${am}${linha}\nContador: %02d\n%(%F %X)T\nEste é o $0\nChamando: ${0/1/2}${fc}\n" $count $EPOCHSECONDS
sleep 1;
${0/1/2}

Script02.sh
#!/usr/bin/env bash
vm="\e[1;38m";fc="\e[m";
printf "\n${vm}${linha}\nContador: %02d\n%(%F %X)T\nEste é o $0\nChamando: ${0/2/1}${fc}\n" $count $EPOCHSECONDS
sleep 0.5;
(($count<$max)) && ${0/2/1} || { printf "\n${vm}${linha}\nOpssss, Saindo\n${linha}${fc}\n";exit;}

Note que as variáveis:
count, max=5 e linha;
Foram criadas e exportadas no Script01.sh


______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________



3. Re: Executando scripts em Python consecutivamente

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 20/06/2021 - 20:37h


Tente o módulo pickle
https://www.geeksforgeeks.org/understanding-python-pickling-example/


4. Re: Executando scripts em Python consecutivamente

Claudio Pessoa
claupessoa

(usa Linux Mint)

Enviado em 21/06/2021 - 00:38h


msoliver escreveu:


claupessoa escreveu:

Conheço o linux há um tempo e sei que existem diversas ferramentas quando usamos o terminal (chamo de ferramentas aquelas letras que acompanham os comandos). Gostaria de saber se existe alguma forma de executar um primeiro script em Python e na hora de executar o segundo script, usar as mesmas variáveis do primeiro. Estou usando isso para data science, mas vou escrever um exemplo bem curto usando a mesma ideia do que eu estou trabalhando: contar os picos de um gráfico e utilizar os pontos para realizar alguns cálculos, como o gráfico é de um sinal ruidoso preciso pegar os pontos manualmente. Não entendo pq não funciona usar apenas um programa, mas se escrevo tudo em um único programa ele simplesmente não salva os pontos. Deixei em negrito no segundo programa as variáveis que eu preciso 'reutilizar' do programa1. Espero que possam me ajudar.
-programa1.py: coloco em gráficos os dados obtidos em laboratório

import numpy as np
import matplotlib.pyplot as plt
picos = []
for i in range(1,5):
w = 2*np.pi*i*i
title = str(round(w))
x = np.linspace(0,10*np.pi,20000)
y = np.sin(w*x)
plt.figure(title)
plt.plot(x, y, 'r-', label=')

-programa2.py: clico em cada pico do sinal e salvo na lista picos, para depois escrever em um arquivo e poder calcular o que é de interesse.

# Código de interação com o gráfico.
def desenho(event):
# Faz um quadrado azul no ponto que foi clicado
tb = plt.get_current_fig_manager().toolbar
if event.button==1 and event.inaxes and tb.mode == '':
p,q = event.xdata,event.ydata
plt.plot([p],[q],'bs')
plt.draw()
def salvando(event):
# Salva os dados na lista 'picos'
global picos
ind = event.ind
a = np.take(x,ind)[0]
picos = np.append(picos,[int(a)])
plt.figure(title).canvas.mpl_connect('pick_event', salvando)
plt.figure(title).canvas.mpl_connect('button_press_event', desenho)
plt.tight_layout()
plt.show()
# %%
picos = np.array(sorted(set(picos)))
nome = '/home/user/'+ SINALBASE[11:21]+'/' + SINALBASE[16:21] + '.csv'
arquivo = open(nome,'a')
for i in range(len(picos)):
if i == len(picos)-1:
dale = str(int(picos[i]-I0))+'\n'
else:
dale = str(picos[i]-I0)+','
arquivo.write(dale)
[\code]

Desde já, agradeço


Boa noite claupessoa.
Pouco conheço sobre o Python, acredito que tenha "algo" semelhante.
No bash utilizo o "export".
Exemplo: bash script
---------------------------------------------------------------------------------------------------------------
Script01.sh
[code]#!/usr/bin/env bash
am="\e[1;33m";fc="\e[m";
linha=$(printf "%20s"|sed 's/ /&#9472;/g')
export count;export max=5;export linha;
let count++;
((${count}==1)) && printf "\x1bc"
printf "\n${am}${linha}\nContador: %02d\n%(%F %X)T\nEste é o $0\nChamando: ${0/1/2}${fc}\n" $count $EPOCHSECONDS
sleep 1;
${0/1/2}

Script02.sh
#!/usr/bin/env bash
vm="\e[1;38m";fc="\e[m";
printf "\n${vm}${linha}\nContador: %02d\n%(%F %X)T\nEste é o $0\nChamando: ${0/2/1}${fc}\n" $count $EPOCHSECONDS
sleep 0.5;
(($count<$max)) && ${0/2/1} || { printf "\n${vm}${linha}\nOpssss, Saindo\n${linha}${fc}\n";exit;}

Note que as variáveis:
count, max=5 e linha;
Foram criadas e exportadas no Script01.sh


______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________



Então Marcelo, agradeço sua resposta mas não tenho como usar os .sh pois os dados já foram todos preparados pensando no Python e eu também não tenho dominio. Mas esse comando
export 
eu verei se tem algum análogo para Python. A propósito, consegui resolver usando o Spyder IDLE, fica bem trabalhoso mas o importante é estar funcionando. Valeu


5. Re: Executando scripts em Python consecutivamente

Claudio Pessoa
claupessoa

(usa Linux Mint)

Enviado em 21/06/2021 - 00:39h


leandropscardua escreveu:


Tente o módulo pickle
https://www.geeksforgeeks.org/understanding-python-pickling-example/


Valeu leandro, vou estar vendo se esta opção me resolve e se eu consigo implementá-la.