繁体   English   中英

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

[英]Send value of variable that is in a loop from one script to another script

我一直很乐意将变量从一个脚本发送到另一个脚本,并且很容易地完成了一些基本的事情,但是我陷入了困境,希望获得一些输入。

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

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

出:

0*
*

*
1*
*

*
2*
*

*

我终于得到它的工作。 多亏与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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM