我使用Python 2.7来监控在Windows 2012服务器上运行的某些应用程序的磁盘使用情况。如何获取某个网络存储文件夹的大小,例如:
\\storage\my_folder\
我试图使用(来自这篇文章:calculating-a-directory-size-using-python):
import os
def getFolderSize(folder):
total_size = os.path.getsize(folder)
for item in os.listdir(folder):
itempath = os.path.join(folder, item)
if os.path.isfile(itempath):
total_size += os.path.getsize(itempath)
elif os.path.isdir(itempath):
total_size += getFolderSize(itempath)
return total_size
但当然不支持网络路径。
答案 0 :(得分:1)
如果它是2012(Windows)服务器,您可以使用SMB。
这是我刚刚用来获取Windows服务器上共享文件夹大小的小型测试程序。我还没有详尽地测试它,所以它可能需要一些工作,但它应该为你提供工作的基础。
它使用pysmb
from smb import SMBConnection
sep = '\\'
def RecursiveInspector(conn, shareName, path):
#print path.encode('utf8')
localSize = 0
response = conn.listPath(shareName, path, timeout=30)
for i in range(len(response)):
fname = response[i].filename
if (fname == ".") or (fname == ".."):
continue
if (response[i].isDirectory):
dname = path
if not (path.endswith(sep)):
dname += sep
dname += fname
localSize += RecursiveInspector(conn, shareName, dname)
else:
localSize += response[i].file_size
return localSize
conn = SMBConnection.SMBConnection("my_username",
"my_password",
"laptop",
"the_shared_folder_name",
use_ntlm_v2 = True)
conn.connect("1.2.3.4", 139)
path = sep # start at root
totalSize = RecursiveInspector(conn, "the_shared_folder_name", path)
print totalSize
希望这可能有用。
答案 1 :(得分:0)
感谢post使用win32com.client
让我获得网络文件夹的大小!