将循环中变量的值从一个脚本发送到另一个脚本

时间:2016-08-17 14:06:45

标签: python

我一直在摆弄从一个脚本到另一个脚本的变量,并且很容易做了一些基本的事情,但是我已经陷入困境并且希望得到一些输入。

这是我的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)

2 个答案:

答案 0 :(得分:0)

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*
*

*

答案 1 :(得分:0)

我终于开始工作了。感谢与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