Tenho um script para meu USB que preciso usar em vários dispositivos e quero que ele seja ejetado automaticamente. Usando esse método, desde que tenha privilégios elevados, ele roda sem problemas, sem erros, mas verifico o explorador de arquivos e o USB ainda está lá:
p = Popen(["diskpart"], stdin=PIPE)
p.stdin.write(b"select disk " + drive_letter.encode() + b"\n")
p.stdin.write(b"remove all dismount\n")
p.stdin.write(b"exit\n")
print(f"Successfully ejected drive {successful_drive_path}.")
Tudo isso usando o módulo subprocess para Python. Sei que não preciso fazer isso, mas ainda quero fazer. Suspeito que seja devido ao código estar sendo executado no USB, então talvez eu pudesse, com o arquivo bat que uso para executar e gerenciar tudo, executar o código de ejeção usando um script de autoexclusão no disco principal. Não sei, só tenho ideias.
Acredito que o problema seja que você o está chamando de disco, não de volume. Este código resolverá o problema, mas só funciona com privilégios elevados: