Python 2.7 从列表中创建cli数字菜单
我有一个列表,我想要的是一个菜单,打印出存储在mylist中的所有分区。我希望它看起来像这样Python 2.7 从列表中创建cli数字菜单,python-2.7,Python 2.7,我有一个列表,我想要的是一个菜单,打印出存储在mylist中的所有分区。我希望它看起来像这样 1: /dev/sda0 2: /dev/sda1 3: /dev/sda2 etc.... 这就是我目前所拥有的 import pyudev mylist = [device.devide_node for device in context.list_devices(subsystem='block', DEVTYPE='partitions')] for x in mylist:
1: /dev/sda0
2: /dev/sda1
3: /dev/sda2
etc....
这就是我目前所拥有的
import pyudev
mylist = [device.devide_node for device in context.list_devices(subsystem='block', DEVTYPE='partitions')]
for x in mylist:
print mylist[len(x)] + ': ' + mylist
我不知道如何将其格式化,使其看起来像上面所示使用
枚举
:
for i, x in enumerate(mylist):
print '{}: {}'.format(i+1, x)
您当前的代码:
for x in mylist:
print mylist[len(x)]
没有什么意义x
是列表中的一个项目,len(x)
是该项目的长度(例如len(“/dev/sda0”)==9
),您正试图将该长度用作列表的索引。这可能会导致出现索引器
,因为不能保证mylist[9]
存在
我想你想做的是:
for x in range(len(mylist)):
print mylist[x]
其中,x
将是mylist
的有效索引,但对于这种类型的流程,最好使用enumerate
:
for num, device in enumerate(mylist, 1):
print "{0}: {1}".format(num, device)
这并不重要,但我倾向于编写
enumerate(mylist,1)
。你们都是对的,但多亏了你们两位,我只能给出一个答案。旁白:那个代码似乎不起作用。您没有创建上下文
对象,并且您有一个设备节点
的打字错误。