2 votes

os.path.getsize donne une taille incorrecte du fichier .dll dans Windows 10

Python 3.6.0, Windows 10 (64 bit)

import os
path = r'C:\Windows\System32\AdvancedInstallers\cmiv2.dll'
print(os.path.getsize(path))

ce code donne le résultat suivant 2193248 mais lorsque je vois les propriétés de ce fichier, il apparaît 3252576 . Il ne s'agit pas de la taille de la propriété du disque. Je parle de la taille réelle.

file properties

J'attends d'un programme python qu'il imprime 3252576 .

1voto

Leon Points 20011

Cela peut être lié à Flux de données alternatifs NTFS . Bien que l'article indique que la présence d'ADS dans un fichier n'affecte pas sa taille, les choses ont pu changer depuis la rédaction de l'article (en 2004) et la boîte de dialogue des propriétés de Windows 10 peut très bien prendre en compte tous les ADS d'un fichier, ce qui n'est pas le cas de python.

A article de blog plus récent explique comment examiner les flux de données d'un fichier à l'aide des utilitaires PowerShell :

Get-item -Path C:\Windows\System32\AdvancedInstallers\cmiv2.dll -stream *

Si mon hypothèse est correcte, le résultat devrait ressembler à ce qui suit :

   FileName: C:\Windows\System32\AdvancedInstallers\cmiv2.dll

Stream                  Length
------                  ------
:$DATA                  2193248
SomethingElse           1059328

(ou Quelque chose d'autre peut en fait consister en plusieurs flux plus petits dont les tailles totalisent 1059328).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X