import os, sys import time import pyodbc def pyodbc_connection (server, database, username="", password="", **kwargs): connectors = ["Driver={SQL Server}"] connectors.append ("Server=%s" % server) connectors.append ("Database=%s" % database) if username: connectors.append ("UID=%s" % username) connectors.append ("PWD=%s" % password) else: connectors.append ("TrustedConnection=Yes") return pyodbc.connect (";".join (connectors), **kwargs) def database (): return pyodbc_connection ("SVR17", "TDI") def get_size (folder): size = 0 for dirname, dirnames, filenames in os.walk (folder): for filename in filenames: size += os.path.getsize (os.path.join (dirname, filename)) return size SQL = "INSERT INTO dbo.folder_sizes (root_name, folder_name, size) VALUES (?, ?, ?)" THRESHOLD_SECS = 60 def main (root, db): folder_sizes = [] q = db.cursor () try: for directory in (f for f in os.listdir (root) if os.path.isdir (os.path.join (root, f))): print directory folder_sizes.append ((root, directory, get_size (os.path.join (root, directory)))) finally: if folder_sizes: q.executemany (SQL, folder_sizes) q.execute ("COMMIT") q.close () print if __name__ == '__main__': try: root = sys.argv[1] interval = int (sys.argv[2]) except (IndexError, ValueError): raise RuntimeError, """watch_folder_sizes.py """ db = database () try: while True: main (root, db) time.sleep (60 * interval) finally: db.close ()