O sistema de arquivos /proc
não existe nas janelas do MS.
Se você quiser se ater ao material embutido em Python, você terá que fazer com o que você pode encontrar no os e módulos da plataforma .
Como alternativa, você pode usar o módulo interno ctypes para chamar funções do MS Windows '% código%. Dessa forma, você pode extrair informações equivalentes, se disponíveis. Provavelmente seria sensato encapsular este material específico da plataforma em um módulo utilitário. Isso poderia ler Kernel32.dll
arquivos ou chamar /proc
funções dependendo do valor de, por exemplo, Kernel32.dll
.
Editar :
Para encontrar informações sobre discos e volumes (janelas para sistemas de arquivos), consulte as informações do MS sobre sistemas de arquivos locais .
Eu diria que você poderia começar com GetLogicalDriveStrings , depois GetVolumeInformation . Em seguida, use outras funções de gerenciamento de volume .
Edit2:
Este é um exemplo de uso de ctypes. Eu não tenho uma máquina Windows disponível para testá-lo, no entanto. De acordo com os documentos, o protótipo de GetLogicalDriveStrings é:
DWORD WINAPI GetLogicalDriveStrings(
_In_ DWORD nBufferLength,
_Out_ LPTSTR lpBuffer
);
Um platform.system()
é um int não assinado de 32 bits. Depende da plataforma, mas isso é normalmente feito com DWORD
em ctypes. Um LPTSTR é um ponteiro para uma área de memória para armazenar coisas. Podemos usar c_uint
para fazer isso. Deve funcionar algo assim
import ctypes
blen = ctypes.c_uint(128)
rv = ctypes.c_uint()
bufs = ctypes.create_string_buffer(128)
rv = ctypes.windll.kernel32.GetLogicalDriveStrings(blen, bufs)
if rv.value == 0:
raise ValueError('GetLogicalDriveStrings returned 0.')
drives = bufs.raw.split('DWORD WINAPI GetLogicalDriveStrings(
_In_ DWORD nBufferLength,
_Out_ LPTSTR lpBuffer
);
')
drvstring = ' '.join(drives)
print drvstring
O nome create_string_buffer
deve agora referenciar uma lista de nomes de unidades.