Sharelaufwerk überprüfen....

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
flyer
User
Beiträge: 11
Registriert: Montag 8. Januar 2007, 09:56

Hi,
ich suche eine Funktion mit der ich ein Sharelaufwerk \\servername\dirname
auf seinen freien Speicherbereich überprüfen kann.
Eine Funktion die mir den gesamten und den freien Platz zurückliefern würde.
Hat jemand von Euch hierzu eine Idee ?
Dank Euch schonmal im Vorfeld für Anregungen und Ideen.
Grüsse
Markus
Benutzeravatar
limepix
User
Beiträge: 37
Registriert: Dienstag 11. November 2008, 16:54

ich kann dir sagen wie ich das unter windows mache...


du brauchst folgende module:

wmi - http://timgolden.me.uk/python/wmi/index.html
pywin32 - http://sourceforge.net/projects/pywin32/

das problem ist, ich kann selber nur auf eigene logische (bzw physikalische) discs zugreifen. ob man von gemounteten discs solche infos rausbekommt, kann ich leider nicht beantworten. (vllt findet man da in der msdn was dazu http://msdn.microsoft.com/en-us/library ... 85%29.aspx)

schau dir mal folgenden codeschnipsel an, dann siehste, anhand der ausgabe davon auch gleich, auf was du da zugreifen kannst.

Code: Alles auswählen

import wmi

c = wmi.WMI()

for x in c.Win32_PerfFormattedData_PerfDisk_LogicalDisk():
    print x
viele grüße
und vielleicht hilfts ja auch weiter... :wink:

limepix
flyer
User
Beiträge: 11
Registriert: Montag 8. Januar 2007, 09:56

Hi limepix, werd das nachher mal ausprobieren und Feedback posten...dank Dir.
ciaoo
Markus
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Hallo auch,

hiermal ein kleines Script, welches mittels pywin32 versucht zu ermitteln, wieviel freiverfügbarer Gesamtspeicher ein Pfad hat - sofern das, was den Pfed bereit stellt, diesbezüglich Informationen rausückt.

Code: Alles auswählen

import string
import sys

import win32api
import win32wnet
import win32netcon

TMP_DEVICE_LETTER = 'X:' # einer der Haken dieses Scripts ... der Laufwerksbuchstabe sollte natürlich auf dem Testsystem noch nicht belegt sein
UNC_PREFIX = r'\\'

def error(msg):
	print("ERROR: %s" % msg)
	sys.exit(-1)

def get_available_space(path):
	cleanup = False
	lookup_path = path
	result = -1
	
	if path.startswith(UNC_PREFIX):
		try:
			win32wnet.WNetAddConnection2(win32netcon.RESOURCETYPE_ANY, TMP_DEVICE_LETTER, path)
			cleanup = True
			lookup_path = TMP_DEVICE_LETTER
		except win32wnet.error, e:
			error("Creating temporary connection failed: %s" % e)
	
	try:
		free_bytes, total_bytes, total_free_bytes = win32api.GetDiskFreeSpaceEx(lookup_path)
		result = total_free_bytes # falls Du eine der anderen Rückgabeparameter benötigst, fühl Dich frei diesen hier anzugeben
	except win32api.error, e:
		error("Retrieving available space information failed: %s" % e)
	finally:
		if cleanup:
			try:
				win32wnet.WNetCancelConnection2(TMP_DEVICE_LETTER, 1, 1)
			except win32wnet.error, e:
				print("INFO: Closing tmp connection failed: %s" %s) 
				
	return result 
	
target = r'\\servername\dirname'
print "Total free available space on '%s': %s" % (target, get_available_space(target))

Getestet mit Python 2.6 auf einer WinXp Maschine in einem Windows Share Netzwerk

Vielleicht hilfts ja, Gruß,
>>Masaru<<
Antworten