Skip to content

Instantly share code, notes, and snippets.

@syfluqs
Created June 21, 2017 10:50
Show Gist options
  • Save syfluqs/f5910768231077cb93297cbb55ad7f7b to your computer and use it in GitHub Desktop.
Save syfluqs/f5910768231077cb93297cbb55ad7f7b to your computer and use it in GitHub Desktop.
import os, sys
import _pickle as pickle
import record_class
DB_FILENAME = 'dbfile.db'
SCAN_DIR_NAME = '.'
SCAN_DEPTH = 1
master_dict = {}
def scan_files(dir_name, max_depth, current_depth=0):
dir_name = os.path.realpath(dir_name)
try:
if (current_depth<max_depth):
if (os.path.isdir(dir_name)):
for i in os.listdir(dir_name):
# print("append file node {}".format(i))
if (os.path.isdir(os.path.join(dir_name,i))):
# master_list.append(master_list_item(master_list_item.TYPE_DIR,i))
master_dict[os.path.join(dir_name,i)] = record_class.record(name=i,type=record_class.TYPE_DIR,abs_path=os.path.join(dir_name,i))
# print("going deeper into "+i)
scan_files(os.path.join(dir_name,i),max_depth,current_depth+1)
else:
# master_list.append(master_list_item(master_list_item.TYPE_FILE,i))
master_dict[os.path.join(dir_name,i)] = record_class.record(name=i,extension=i.split('.')[-1],type=record_class.TYPE_FILE,abs_path=os.path.join(dir_name,i))
else:
# master_list.append(master_list_item(master_list_item.TYPE_FILE,dir_name))
master_dict[dir_name] = record_class.record(name=dir_name,extension=dir_name.split('.')[-1],type=record_class.TYPE_FILE,abs_path=dir_name)
# print("append file node {}".format(str(dir_name)))
elif (current_depth>=max_depth):
if os.path.isdir(dir_name):
# master_list.append(master_list_item(master_list_item.TYPE_DIR,dir_name))
master_dict[dir_name] = record_class.record(name=dir_name,type=record_class.TYPE_DIR,abs_path=dir_name)
else:
# master_list.append(master_list_item(master_list_item.TYPE_FILE,dir_name))
master_dict[dir_name] = record_class.record(name=dir_name,extension=dir_name.split('.')[-1],type=record_class.TYPE_FILE,abs_path=dir_name)
# print("appending floor node {}".format(dir_name))
except PermissionError:
pass
if __name__=='__main__':
# check if database file exists
if (os.path.isfile(DB_FILENAME)):
with open(DB_FILENAME,'rb') as dbfile:
master_dict = pickle.loads(dbfile)
print(master_dict)
else:
scan_files(SCAN_DIR_NAME, SCAN_DEPTH)
# pickle master_dict
with open(DB_FILENAME,'wb') as dbfile:
pickle.dump(master_dict,dbfile,-1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment