【解決方法】Python で diskpart を使用してドライブ文字を取得するにはどうすればよいですか

プログラミングQA


Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     R                RAW    Partition    931 GB  Healthy

ボリューム番号でドライブ文字を確認しています

しかし、私が得ているすべての残りから正確にRの手紙を受け取っていません

以下のコードで私が間違っていること

私にお知らせください

私が試したこと:

def verify_drive_letter1(volume_number,drive_letter):
    verify_drive_command=["diskpart",'/s',"verify_list.txt"]
    with open("verify_list.txt","w") as f:
        f.write("select disk {}\n".format(volume_number))
        f.write("detail disk\n")
    try:
        result=subprocess.run(verify_drive_command,capture_output=True,text=True)
        output=result.stdout
        print(output)

    except Exception as e:
        print("faild to list Drive Letter ",e)
        return None

    for line in output.split('\n'):
        if line.startswith('  Volume '):
            found_drive_letter = line.split("\n")[-1]   
            get_drive_letter= found_drive_letter.split()[2][1:]
            if f"{drive_letter}:" in get_drive_letter and volume_number in line:
                return True

解決策 1

まず、Diskpart には管理者権限が必要なため、スクリプトを管理者として実行してください。

以下は Driveletter R を返すはずです –

try:
        result = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
    except subprocess.CalledProcessError as e:
        raise Exception(f"Failed to get drive letter: {e.output.decode('utf-8')}")

    result = result.decode('utf-8')
    for line in result.split('\n'):
        if volume_name in line:
            return line.split()[1]

    raise Exception(f"Failed to get drive letter: Volume '{volume_name}' not found")
    

//An example to get the drive letter of a volume named 'MyDisk'
try:
    drive_letter = get_drive_letter('MyDisk')
    print(f"Drive letter: {drive_letter}")
except Exception as e:
    print(f"Error: {e}")

解決策 2

これはうまくいくはずです:

Python
if line.startswith('  Volume '):
    get_drive_letter = line.split()[2]

コメント

タイトルとURLをコピーしました