发送从一个脚本到另一个脚本的循环变量的值
我一直在从一个脚本发送一个变量到另一个脚本,并做了一些基本的事情很容易,但我已经卡住了,并希望得到一些输入。发送从一个脚本到另一个脚本的循环变量的值
这是我script1.py
import time
x = 0
while x < 100:
x = x+1
time.sleep(1)
这是我script2.py
import subprocess
subprocess.Popen("python script1.py", shell=True)
from script1 import x
print(x)
这样做的输出仅仅是100
有没有一种方法来打印变量每当它通过script2.py更新时,它们都是x
?
所有这些的原因是我正在从脚本中的串行端口读取数据,但是我希望在不同的脚本中使用输出。因此,只要有数据从串行端口获得存储在一个变量中,我希望将该变量传递给另一个脚本。
编辑:我有一个python脚本,它脚本从一个串口读取数据并记录数据。
就这么说,我想要第二个脚本,它可以从第一个脚本获取包含数据的列表,以便为不同的任务操作它。
编辑2: 我修改了代码如下,但没有打印。
#script 1
import time
x = 0
while x < 100:
x = x+1
print(x)
time.sleep(1)
#script 2
import subprocess
proc = subprocess.Popen(['python','script1.py'],stdout=subprocess.PIPE)
while True:
line = proc.stdout.readline()
print(line)
我终于得到它的工作。感谢来自Vadim的反馈,我能够了解到这些东西是如何工作的。以下是我的代码。
script1.py:
import sys, time
x=0
while x<10:
print(x)
sys.stdout.flush()
x = x+1
time.sleep(1)
script2.py:
import subprocess
proc = subprocess.Popen('python script1.py',
shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
)
while True:
output = proc.stdout.readline()
if output == '':
break
else:
print output.rstrip()
输出:
0 #waits one second
1 #waits one second
2 #waits one second
.
.
.
8 #waits one second
9 #waits one second
main.py
from subprocess import Popen, PIPE
import sys
p = Popen(['py', 'client.py'], stdout=PIPE)
while True:
o = p.stdout.read(1)
if o:
sys.stdout.write(o.decode('utf-8'))
sys.stdout.flush()
print '*'
else: break
client.py
import time
for a in xrange(3):
time.sleep(a)
print a
OUT:
0*
*
*
1*
*
*
2*
*
*
我对此有点困惑。我有两个单独的脚本,而不是脚本中调用的函数。是否有可能修改这个,所以它会在两个不同的脚本? – BadProgrammer
['ping','127.0.0.1']是“不同的脚本” –
感谢您的更改。我尝试运行并得到以下结果: 'python test_threading.py Traceback(最近调用最后一个): 文件“test_threading.py”,第2行,在
那么,是你通过一个子/管连接两个脚本,或者你想要将一个导入另一个?你目前的方法没有任何意义。 – deceze
我的脚本通过子过程链接。什么样的方法会有意义?我对python仍然很陌生,所以有很多我不熟悉的东西。 – BadProgrammer
如果您的脚本通过子流程/管道进行通信,则需要通过该管道传递值;例如'script1.py'写入标准输出,'script2.py'读取第一个脚本的标准输出管道。那么你也不会从'script1'导入x,因为这会绕过整个子流程/管道。 – deceze