如何使用 python 挂载 USB 设备或硬盘分区
How do i mount a usb device or a hard drive partition using 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)))
我收到一条错误消息说 'Invalid argument' 并且在
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.
我只会使用命令行挂载。
import os
os.system("mount /dev/sd(x) /mountpoint")
如果您查看 man 2 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)))
我收到一条错误消息说 'Invalid argument' 并且在
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.
我只会使用命令行挂载。
import os
os.system("mount /dev/sd(x) /mountpoint")
如果您查看 man 2 mount
,您会发现挂载标志必须是数字,而不是字符串。这是一个明显的错误;是不是都是你的错误,我也不好说。