Разделение диска из filepath

#python

#python

Вопрос:

На платформе Windows довольно просто отделить букву диска от пути к файлу с помощью модуля npath:

 import ntpath
filepath='c:\my_drivepath\somefolder\blabla\filename.txt'
result = ntpath.splitdrive(filepath)
print result
  

выводит:

 ('c:', '\my_drivepath\somefolder\blabla\filename.txt') <type 'tuple'>
  

Но использовать его с Mac filepath:

 filepath='/Volumes/drivename/Folder1/Folder2/Folder3/Folder4/Filename.ext'
  

результаты для:

 ('', '/Volumes/drivename/Folder1/Folder2/Folder3/Folder4/Filename.ext') <type 'tuple'>
  

Интересно, есть ли какой-либо доступный модуль / метод / команда, который разделяет имя диска из пути к файлу Mac… ищем вывод, подобный этому:

 ('/Volumes/drivename', '/Folder1/Folder2/Folder3/Folder4/Filename.ext') 
  

Ответ №1:

Mac — это ОС на базе Unix, и ее концепция «диска» отличается от Windows. В Unix все каталоги начинаются с / , и «диски» могут быть смонтированы в любом каталоге ниже / .

В вашем случае лучше использовать split для выполнения своей работы:

 >>> d = '/Volumes/drivename/Folder1/Folder2/Folder3/Folder4/Filename.ext'
>>> d.split('/',3)
['', 'Volumes', 'drivename', 'Folder1/Folder2/Folder3/Folder4/Filename.ext']`
  

Комментарии:

1. Чистый подход. Мне это нравится! Спасибо!

Ответ №2:

В системах на базе Unix диск может быть сопоставлен с любым каталогом. Так что это может быть на

/Volumes/имя диска

или

/Users/dir1 /dir2 /dir3 /dir4′

Возможно, вы захотите использовать утилиту командной строки, такую как df , чтобы найти, какие диски существуют и где они сопоставлены. Тогда вы узнаете, что такое «путь к диску».

 $ df -T
Filesystem     Type     1K-blocks      Used Available Use% Mounted on
/dev/sda1      ext4     236003080 139929200  84062516  63% /
udev           devtmpfs     10240         0     10240   0% /dev
tmpfs          tmpfs       805524       968    804556   1% /run
tmpfs          tmpfs         5120         0      5120   0% /run/lock
tmpfs          tmpfs      3642440     21384   3621056   1% /run/shm
none           tmpfs            4         0         4   0% /sys/fs/cgroup
  

Здесь вы можете видеть, что мой основной диск подключен к / . Если бы у меня был USB-накопитель, вы бы увидели что-то вроде /media/usb0