如何将 return 值分配给 python 中的变量而不是内存地址?

How can I assign a return value to a variable in python not the memory address?

我有两个串行端口连接到同一台计算机。下面的代码将打印端口连接到我的机器。我只想将端口值分配给一个变量,这样我就可以在代码中使用 down。

import serial.tools.list_ports
ports = list(serial.tools.list_ports.comports())
for p in ports:
    print p

输出是

>>> /dev/ttyS0 - ttyS0
/dev/ttyUSB1 - FT232R USB UART
/dev/ttyUSB0 - USB-Serial Controller D

我想解析这些信息并分配以下内容:

var1 = ttyS0
var2 = ttyUSB1
var3 = ttyUSB0

我如何在 python3 中做到这一点?

假设输出是一个字符串,您可以在“/”上拆分每个端口,然后收集每个端口的第一个 space:

拆分 ('/') 将 return:

['', 'dev', 'ttyS0 - 'ttyS0']

收集第三个元素然后在“ ”上拆分将 return:

['ttyS0', '-', ttyS0']

将此拆分的第一个元素分配给所需的变量。

port_values = []
for p in ports:
    part_values.append(p.split('/')[2].split(' ')[0]

如果您希望将它们返回为 var_1、var_2 等,您可以将它们从列表中拉出:

var_1 = port_values[0]
var_2 = port_values[1]
var_3 = port_values[2]

documentationlist_portreturn中提到的ListPortInfo对象列表。此对象具有一些属性(设备、名称...)

import serial.tools.list_ports
ports = list(serial.tools.list_ports.comports())
for p in ports:
    print (p.name)