Раздел диска Python - PullRequest
       29

Раздел диска Python

1 голос
/ 24 апреля 2019

Я хочу получить все локальные диски и их разделы, а затем в результате вернуть все данные, такие как «общее пространство, использованное пространство и свободное пространство». Проблема состоит в том, чтобы проверить, существует ли раздел, затем продолжить, если не из-за ошибки.

В приведенном ниже коде мой локальный диск состоит из трех разделов: C: \, D: \, F: \. Однако раздел G: \ не существует, поэтому он зависает, а затем закрывается.

Я использую Python 3.6 и сообщество Pycharm.

def disk_usage(self):
        disks = ['C','D','F','G']
        for i in disks:
            total, used, free = shutil.disk_usage(i+":\\")
            try:
                print("Drive " + i + " as follows:")
                print("==================")
                print("Total: %d GB" % (total // (2**30)))
                print("Used: %d GB" % (used // (2**30)))
                print("Free: %d GB" % (free // (2**30)))
                print("===========")
                print("")
            except GetoptError as err:
               print(err)

Заранее спасибо,

1 Ответ

2 голосов
/ 24 апреля 2019

вы можете увидеть, существует ли путь до вычисления размера:

p = i+":"+os.sep
if os.path.exists(p):
    total, used, free = shutil.disk_usage(p)

или перехватить исключение OSError

try:
   total, used, free = shutil.disk_usage(i+":\\")
   ...
catch OSError:
    pass

В качестве отступления было бы неплохополучить этот список дисков также динамически (см. Есть ли способ перечислить все доступные буквы дисков в Python? ).

Вероятно, все еще требуется проверить исключение существования / перехвата (диск нев приводе такого), как объяснено выше.

...