2016-09-13 61 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,你會看到安裝標誌必須是數字,而不是字符串。這是一個明顯的錯誤;不管這是你所有的錯誤,我不能說。