如何使用python挂载USB设备或硬盘驱动器分区

时间:2016-09-13 19:32:42

标签: python linux python-2.7 ctypes mount

我一直在尝试编写一个将设备安装在指定位置的程序,一切都将由用户输入完成。

我使用了 ctypes 。 我被困的地方就是这个部分

 def mount(source, target, fs, options=''):
  ret = ctypes.CDLL('libc.so.6', use_errno=True).mount(source, target, fs, 0, options)
  if ret < 0:
   errno = ctypes.get_errno()
   raise RuntimeError("Error mounting {} ({}) on {} : {}".
    format(source, fs, target, os.strerror(errno)))

我收到错误消息&#39;无效的参数&#39; ,这是在
mount(a, b, 'ntfs', ' -w')

以下是我的全部代码:

import os
import ctypes

print "Usb device management"

def mount(source, target, fs, options=''):
ret = ctypes.CDLL('libc.so.6', use_errno=True).mount(source, target, fs, 0, options)
 if ret < 0:
errno = ctypes.get_errno()
raise RuntimeError("Error mounting {} ({}) on {} : {}".
    format(source, fs, target, os.strerror(errno)))

def umount(source):
 retu = ctypes.CDLL('libc.so.6', use_errno = True).umount(source)
  if retu < 0:
    errno1 = ctypes.get_errno1()
    raise RuntimeError("error unmounting {} ".
        format(source))


while True :
print "\n 1. Mount \n 2. Unmount \n 3. Write to file \n 4. Read File \n 5. Copy \n 6. Exit"
choice  = int(raw_input('Enter the choice : '))

if choice == 1:
    a = raw_input('Enter device name ')
    b = raw_input('Enter mount location ')
    mount(a, b, 'ntfs', ' -w')
    print "USB mounted"

elif choice == 2:
    print "Unmounting USB device"
    c=raw_input('Enter USB device location ')
    umount (c)
    print "USB device unmounted"
elif choice == 3:
    string = raw_input('Give input to write to file')
    fd = open("%s/file.txt"%(b), 'w')
    fd.write('string')
    print "file Write successfull"
    fd.close()
elif choice == 4:
    print "Reading file"
    fd = open("%s/file.txt"%(b),'r')
    print "File read successfull "
    fd.close()
elif choice == 5:
    copy_location = raw_input('Enter location to where it has to be copied')
    print "Copying file "
    os.system("cp %s/file.txt %s"%(b, copy_location))
    print "%s  %s"%(b, copy_location)
    print("File copied to location $s "%(copylocation))
if choice == 6:
    print "Exit bye"
    break;

我的系统是Ubuntu 15.10。

2 个答案:

答案 0 :(得分:1)

如果查看man 2 mount,您会看到挂载标志必须是数字,而不是字符串。这是一个明显的错误;不管你是否都有错误,我不能说。

答案 1 :(得分:0)

我只想使用命令行mount。

int?