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.
Es gibt einige Scheiben jedoch, die eine 2-stellige Kennung (dh disk11) –
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