Я пишу небольшой скрипт, в котором перечислены текущие подключенные жесткие диски на моей машине. Мне нужен только идентификатор диска (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()
Этот последний бит - это самое последнее, что я пробовал. Определенно открыт для перехода на другой маршрут.
Есть несколько дисков, однако, что содержат 2 цифры идентификатора а (т.е. disk11) –
Хорошо, тогда вы можете отфильтровать их с помощью '[disk [: 7] ...]' first, а затем проверить последний элемент из них 'not unique_short_disk [-1] .isalpha()' _here [-1] относится к последнему элементу 'isalpha() 'проверяет, является ли это буквой, а не номером_. – user3036878