2016-09-13 279 views
-1

我一直在试图编写一个程序来将设备挂载到指定位置,一切都将由用户输入完成。我已使用ctypes。 这里我被困的地方是在这部分我如何使用python挂载usb设备或硬盘分区

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))) 

我收到一个错误说“无效参数”那就是在

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。

回答

0

我只是使用命令行挂载。

import os 
os.system("mount /dev/sd(x) /mountpoint") 
+0

我知道,我已经这样做了,但我正在了解这一点,我碰到了ctypes,现在我也想学习这种方法。 –

0

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

相关问题