2016-07-21 17 views
0

Ich schreibe ein kleines Skript, das die aktuell verbundenen Festplatten auf meinem Rechner auflistet. Ich brauche nur die Datenträgerkennung (disk0), nicht die Partitions-ID (disk0s1, disk0s2 usw.) Wie kann ich ein Array durchlaufen, das diskID und partitionID enthält, und die partitionID-Einträge entfernen? Hier ist, was ich bisher versuche:iterierten String aus String-Array entfernen

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

Das letzte Bit ist nur die neueste Sache, die ich ausprobiert habe. Definitiv offen für eine andere Route.

Antwort

0

Versuch beginnend mit

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

dann, da Platten-IDs sind nur 5 Zeichen Länge

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

Es gibt einige Scheiben jedoch, die eine 2-stellige Kennung (dh disk11) –

+0

Ok enthalten, dann Sie können sie zuerst mit '[disk [: 7] ...]' filtern und dann das letzte Element von ihnen mit 'not unique_short_disk [-1] .isalpha()' _here [-1] auf das letzte Element 'isalpha() 'überprüft, ob es sich um einen Buchstaben, nicht um eine Zahl_ handelt. – user3036878