import os import datetime from itertools import groupby import sys def main(argv): if os.path.exists(argv[0]): os.chdir(argv[0]) absolutePath = os.path.abspath(os.curdir) files = os.listdir(absolutePath) for content, files in groupby(files, getFileContent): files = list(files) if len(files) > 1: files = sorted(files, key = lambda file: getModificationDate(file), reverse=True) mkdirIfDoesNotExist("duplikaty") for file in files[1:]: os.rename(file, "duplikaty/" + file) files = os.listdir(absolutePath) files = list(filter(lambda file: file != "duplikaty", files)) for year, files in groupby(files, getFileYear): mkdirIfDoesNotExist(year) for month, files in groupby(files, getFileMonth): mkdirIfDoesNotExist(year + "/" + month) for file in files: os.rename(file, year + "/" + month + "/" + file) def mkdirIfDoesNotExist(path): if not os.path.exists(path): os.mkdir(path) def getModificationDate(file): timestamp = os.path.getmtime(file) modificationDate = datetime.datetime.fromtimestamp(timestamp) return modificationDate def getFileYear(file): return str(getModificationDate(file).year) def getFileMonth(file): return str(getModificationDate(file).month).zfill(2) def getFileContent(filename): file = open(filename) content = file.read() file.close() return content if __name__ == "__main__": main(sys.argv[1:])