2016-07-21 2 views
0

Я пишу небольшой скрипт, в котором перечислены текущие подключенные жесткие диски на моей машине. Мне нужен только идентификатор диска (disk0), а не идентификатор раздела (disk0s1, disk0s2 и т. Д.). Как я могу перебирать массив, содержащий идентификатор диска и идентификатор раздела, и удалять записи раздела ID? Вот что я пытаюсь сделать до сих пор:удаление итерированной строки из строкового массива

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() 

Этот последний бит - это самое последнее, что я пробовал. Определенно открыт для перехода на другой маршрут.

ответ

0

попробовать начиная с

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

затем, данные диски идентификаторы только длина 5-символы

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

Есть несколько дисков, однако, что содержат 2 цифры идентификатора а (т.е. disk11) –

+0

Хорошо, тогда вы можете отфильтровать их с помощью '[disk [: 7] ...]' first, а затем проверить последний элемент из них 'not unique_short_disk [-1] .isalpha()' _here [-1] относится к последнему элементу 'isalpha() 'проверяет, является ли это буквой, а не номером_. – user3036878

Смежные вопросы