从字符串数组中删除迭代字符串

2024-09-22 14:26:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个小脚本,列出我机器上当前连接的硬盘。我只需要磁盘标识符(disk0),而不需要分区ID(disk0s1、disk0s2等) 如何遍历包含diskID和partitionID的数组并删除partitionID条目?以下是我目前正在尝试的:

    import os

    allDrives = os.listdir("/dev/")
    parsedDrives = []

    def parseAllDrives():
        parsedDrives = []
        matching = []
        for driveName in allDrives:
            if 'disk' in driveName:
                parsedDrives.append(driveName)
            else:
                continue
        for itemName in parsedDrives:
            if len(parsedDrives) != 0:
                if 'rdisk' in itemName:
                    parsedDrives.remove(itemName)
                else:
                    continue
            else:
                continue

#### this is where the problem starts: #####

        # iterate through possible partition identifiers
        for i in range(5):
            #create a string for the partitionID
            systemPostfix = 's' + str(i)
            matching.append(filter(lambda x: systemPostfix in x, parsedDrives))

        for match in matching:
            if match in parsedDrives:
                parsedDrives.remove(match)
                print("found a mactch and removed it")

        print("matched: %s" % matching)
        print(parsedDrives)

    parseAllDrives()

最后一点只是我最近尝试过的。当然可以选择不同的路线


Tags: inforifosmatchelseprintcontinue
1条回答
网友
1楼 · 发布于 2024-09-22 14:26:14

试着从

allDrives = os.listdir("/dev/")
disks = [drive for drive in allDrives if ('disk' in drive)]

然后,给定的磁盘id的长度只有5个字符

short_disks = [disk[:6] for disk in disks]
unique_short_disks = list(set(short_disks))

相关问题 更多 >