Problem with win32api function + using DLL "directly" in windows
Dublanc, David
ddublanc at free.fr
Fri Apr 13 16:34:11 EDT 2001
I use this script (that I found in the newsgroup) and the result is not
correct. Is it possible to use Windows DLL libraries library in Python ?
Because there is a
GetDiskFreeSpaceEx that seems to return the good results (thanks to Chris
Gonnerman who gives me the name of this function).
David
***************************
import string,win32api,win32file
def PrintSpaceReport(drive):
sectorsPerCluster,bytesPerSector,numFreeClusters,totalNumClusters =
win32file.GetDiskFreeSpace(drive + ":\\")
print sectorsPerCluster, bytesPerSector,
numFreeClusters,totalNumClusters
sectorsPerCluster = long(sectorsPerCluster)
bytesPerSector = long(bytesPerSector)
numFreeClusters = long(numFreeClusters)
totalNumClusters = long(totalNumClusters)
print "Drive : ", drive + ":\\"
print "Freespace : ", numFreeClusters * sectorsPerCluster *
bytesPerSector / (1024**2), "MB"
print "Totalspace : ", totalNumClusters * sectorsPerCluster *
bytesPerSector / (1024**2), "MB"
def main():
AvailableDrives = []
for i in string.split(win32api.GetLogicalDriveStrings(),'\000'):
if win32file.GetDriveType(i)==3:# We only need fixed drives (no CD
drives)
AvailableDrives.append(i[:-2])
DriveInfo = []
print AvailableDrives
for drive in AvailableDrives:
PrintSpaceReport(drive)
if __name__ == '__main__':
main()
*******************************************
"Mark Hammond" <MarkH at ActiveState.com> a écrit dans le message news:
3AD70CBA.8050202 at ActiveState.com...
> Dublanc, David wrote:
>
> > I have a problem with the fonction win32file.GetDiskFreeSpace
>
> >
>
> > The maximum number of space is : 65536 bytes. So if the hard disk
capacity
>
> > is > 2 Go, the function returns a wrong result.
>
> >
>
> > Do you have solution for this problem ?
>
>
> Check out the documentation in the help files - the number of bytes is
> not returned, but 4 different values are to help you calculate it:
>
> "number of sectors per cluster, the number of bytes per sector, the
> total number of free clusters on the disk and the total number of
> clusters on the disk"
>
> >>> import win32file
> >>> spc, bps, free_c, tot_c = win32file.GetDiskFreeSpace("F:\\")
> >>> print 1L * free_c * spc * bps
> 2477039616
> >>>
>
> Note the "1L" will prevent integer overflow - this little wart should be
> removed in a Python coming your way soon :)
>
> Mark.
>
>
More information about the Python-list
mailing list