[Pythonmac-SIG] file system encoding and type
Henning Hraban Ramm
hraban at fiee.net
Mon Jul 28 14:43:01 CEST 2008
How can I detect for some entry in "/Volumes" what kind of volume it
is, e.g. Harddisk, USB stick, CD/DVD, and what encoding it uses?
For a CD/DVD cataloguing tool I need to detect removable disks.
At the moment I call "mount" like this:
import re, subprocess
Look for mounted volumes and return the first CD.
Works probably only on MacOS X, depends on the output of 'mount'
mountlines = subprocess.Popen('mount',
reMountLine = re.compile('(.+) on (/[^(]*)(\((.+)\))?', re.I)
for ml in mountlines:
m = reMountLine.match(ml)
if not m:
g = m.groups()
modes = g
modes = modes.split(', ')
if ('nodev' in modes) and ('read-only' in modes):
return unicode(g.strip(), 'utf-8') # here we need
to know the FS encoding!
This is a sample output of "mount" on my Leopard machine:
/dev/disk0s2 on / (hfs, local, journaled)
devfs on /dev (devfs, local)
fdesc on /dev (fdesc, union)
map -hosts on /net (autofs, automounted)
map auto_home on /home (autofs, automounted)
/dev/disk1s1 on /Volumes/RTFM (msdos, local, nodev, nosuid, noowners)
/dev/disk2s0 on /Volumes/family 2008 (cd9660, local, nodev, nosuid,
"RTFM" is my USB stick.
"family 2008" is a CD.
- "hfs", "msdos" or "cd9660" give a hint about the file system's
- hfs: decomposed UTF-8
- msdos: latin-1
- cd9660: ?
- "nodev" seems to mark a removable volume
- "read-only" is normally a CD/DVD
I couldn't find anything in Python's standard libraries to get this
information. Is there?
I would prefer a platform independent solution.
Greetlings from Lake Constance!
https://www.cacert.org (I'm an assurer)
More information about the Pythonmac-SIG