2016-09-13 12 views
-1

私は、指定された場所にデバイスをマウントするプログラムを作成しようとしている、すべてがユーザーの入力によって行われます。私はどのように私は、USBデバイスまたはハードドライブのパーティションをPythonを使用してマウントする

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

私は「無効な引数」を言って、エラーを受信して​​いますであり、それは私の全体のコードで、次の

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を見ると、マウントフラグは数字でなく文字列でなければならないことがわかります。これは明らかなエラーです。それはあなたが持っているすべてのエラーであるかどうか、私は言うことはできません。

関連する問題