#!/usr/bin/env python
# coding:utf-8
from functools import wraps
import os
import re
import subprocess
import fire
def root_required(method):
@wraps(method)
def wrapper(*args, **kwargs):
if os.geteuid() != 0:
exit("You need to have root privileges to run this script.\nPlease try again, this time using 'sudo'. Exiting.")
return method(*args, **kwargs)
return wrapper
class MountNTFS(object):
MOUNT_POINT="/Volumes/NTFS"
def get_output(self, cmd):
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
p.wait()
output = p.stdout.read()
return output
def require_ntfs3g(self):
if not self.get_output("which ntfs-3g"):
exit("ntfs-3g not found, brew install ntfs-3g")
def get_ntfs_disk(self):
pat = re.compile(r"disk[\w]+")
output = self.get_output("diskutil list|grep Windows_NTFS")
fr = pat.findall(output)
if fr:
return fr[0]
def get_ntfs_dev(self):
pat = re.compile(r"/dev/disk[\w]+")
output = self.get_output("mount|grep ntfs")
fr = pat.findall(output)
if fr:
return fr[0]
def is_mounted(self):
return self.get_output("mount|grep osxfuse")
@root_required
def umount(self, device=None):
if device is None:
device = self.MOUNT_POINT
output = self.get_output("umount %s" % device)
@root_required
def mount(self):
MOUNT_POINT = self.MOUNT_POINT
if self.is_mounted():
self.umount()
disk = self.get_ntfs_disk()
if not disk:
print "No NTFS Disk Found."
exit(1)
dev = self.get_ntfs_dev()
if dev:
self.umount(dev)
else:
dev = "/dev/%s" % disk
if not os.path.isdir(MOUNT_POINT):
os.makedirs(MOUNT_POINT)
self.require_ntfs3g()
mount_cmd = "/usr/local/bin/ntfs-3g %s %s -olocal -oallow_other" % (dev, MOUNT_POINT)
output = self.get_output(mount_cmd)
if __name__ == '__main__':
fire.Fire(MountNTFS)
MacOS python自动挂载(mount) NTFS 硬盘 读写模式
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 有些时候做大数据量迁移时,为了快速迁移大数据,有可能在Linux服务器上临时挂载NTFS格式的移动硬盘, 一般情况...
- 最近有不少小伙伴表示,自己购买了正版的ntfs for Mac序列号之后却不能填写,就如下图所示,找不到填写激活码...
- 查看磁盘信息 df -Tdf命令可以显示目前所有文件系统的可用空间及使用情形 查看指定磁盘分区信息 修复ntfs磁...