Создание каталога внутри USB-устройства в Windows

#python-3.x #usb

Вопрос:

Что мне нужно сделать, так это создать каталог внутри USB-устройства с помощью запуска Backup.exe(Backup.py) внутри USB-устройства.

Я имею в виду, когда Backup.exe выполнить с USB-устройства, backup.exe определите USB — устройство и создайте папку резервной копии на USB-устройстве.

Я жестко кодирую USB — устройство и dir_path

 if "Removable Disk" in disk.Description or "My Passport" == disk.VolumeName: dir_path = r'I:\'  

Есть ли лучший способ сделать это автоматически без жесткого диска.Описание и dir_path?

 #pip install WMI import wmi import os   letter = wmi.WMI()  def disk_info():  for disk in letter.Win32_LogicalDisk():  if "Removable Disk" in disk.Description or "My Passport" == disk.VolumeName:  print("="*20, "USB Letter Information", "="*20)  Description = disk.Description  DeviceID = disk.DeviceID  VolumeName = disk.VolumeName  return Description, DeviceID,VolumeName   break    info = disk_info() print(info)  dir_name = ("Backup") #dir_path =  dir_path = r'I:\' file_path = os.path.join(dir_path, dir_name)  if not os.path.exists(file_path):  os.makedirs(file_path)  print("Folder created in ==gt;", info)  

Вывод:

 ==================== USB Letter Information ==================== ('Removable Disk', 'I:', 'KINGSTON') Folder created in ==gt; ('Removable Disk', 'I:', 'KINGSTON') gt;gt;gt;   

Обновление 1:

Я обновил сценарий, и в нем показана информация о USB-накопителе и пути к USB, но по-прежнему не создается папка в USB, и я получаю это сообщение об ошибке.

 import os import wmi  letter = wmi.WMI()  def disk_info():  for disk in letter.Win32_LogicalDisk():  if "Removable Disk" in disk.Description or "My Passport" == disk.VolumeName:  print("="*20, "USB Letter Information", "="*20)  Description = disk.Description  DeviceID = disk.DeviceID  VolumeName = disk.VolumeName  return Description, DeviceID,VolumeName   break   info = disk_info() print(info)   def device_id():  for disk in letter.Win32_DiskDrive():  if "USB" in disk.InterfaceType:  DeviceID = disk.DeviceID   return DeviceID    dev_id = device_id() print(dev_id)   dir_name = ("Backup") dir_path = dev_id  #dir_path = r'I:\' file_path = os.path.join(dir_path, dir_name)  if not os.path.exists(file_path):  os.makedirs(file_path)  print("Folder created in ==gt;", dev_id )  

Вывод:

 ==================== USB Letter Information ==================== ('Removable Disk', 'I:', 'ESD-USB') \.PHYSICALDRIVE2 Traceback (most recent call last):   mkdir(name, mode) PermissionError: [WinError 31] A device attached to the system is not functioning: '\\.\PHYSICALDRIVE2\  

Комментарии:

1. Из чтения вашего кода и выходных данных видно, что буква диска находится внутри disk.DeviceID , и в коде, который вы опубликовали, это будет I: .

2. @KenWhite Да, потому что у меня есть жестко закодированная буква драйвера, как вы видите в dir_path, которая не работает с другими usb и компьютером

3. dir_path вообще не используется в вашей disk_info функции, и ни dir_name то , ни другое, поэтому я не вижу, как это может иметь к этому какое-либо отношение.

4. Ни file_path то , ни другое, что является объединенным dir_path и dir_name . Фактически, disk_info вызывается до того, как они будут объявлены или им будут присвоены значения.

5. @KenWhite Хорошо, как я могу использовать dir_path в моем disk_info? Я довольно новичок в python