将数组值传递给另一个脚本

时间:2019-01-04 22:20:00

标签: python python-3.x

我遇到一个问题,需要从另一个脚本访问变量。我已经搜索了这个问题,并且了解到我们可以使用import来访问另一个脚本中的变量。数据来自Arduino,并通过串行发送到Raspberry Pi,并且值一直持续到脚本停止。我已将代码放入函数中,并且需要连续返回传感器数据。

values.py脚本:

import datetime
import serial
datetime.datetime.now()
ser=serial.Serial('/dev/ttyACM0',115200)

def printVal():
    while True:
        read_serial=ser.readline()
        val= read_serial.decode()
        val =val.strip()
        row = [x for x in val.split(' ')]
        if len(row) == 6:
            #p = ('Sensor1:',row[0], 'Sensor2:',row[1], 'Sensor3:',row[2], 'Sensor4:',row[3], 'Sensor5:',row[4], 'Sensor6:',row[5])
            #print (row)
            #return row
            sensor1= row[0]
            sensor2 = row[1]
            sensor3 = row[2]
            sensor4 = row[3]
            sensor5 = row[4]
            sensor6 = row[5]
            #print (sensor1, sensor2, sensor3, sensor4, sensor5, sensor6)
            return (sensor1)
printVal()

second.py脚本:

from values import printVal
print (printVal())

我需要包含if len(row)==6语句,因为打印的第一行将是三个值,而其他值将不在索引中。

我的问题是我将如何访问第二个脚本中的每个单独的数组值。我是否需要打印功能,我对如何执行此操作感到困惑。我认为return语句仅导致打印一个值,而不是连续的。

2 个答案:

答案 0 :(得分:-1)

您可以使用json格式传递单个变量,数组,哈希表。

对于连续传输,您可以逐行读取数据,并在完成一行后解码/加载数据。

带有示例的文档:

答案 1 :(得分:-1)

您可以从printVal()函数返回一个字典。

def printVal():

    # your logic here to get sensor data

    sensor_data = {'sensor1': row[0],
        'sensor2': row[1],
        'sensor3': row[2],
        'sensor4': row[3],
        'sensor5': row[4],
        'sensor6': row[5]
         }
    return sensor_data

然后您可以将返回值分配给第二个脚本中的变量,如下所示:

from values import printVal

sensor_data = printVal()
print(sensor_data['sensor1'])
print(sensor_data['sensor6'])