目的
從一csv 清單中, 找尋使用者名單, 依此名單去找每個使用者所放置的最新檔案, 數目不等, 需依csv裡設定值
檔案類型包括jpg, png, txt , 再複製每個user給的額度數目到特定資料夾
namelist.csv
igogo,10 mary,2
建立Model User
class User: name = "" quota = 0 userDir = "" userFiles = [] def _init_(self): pass def setName(self, name): self.name = name def getName(self): return self.name def setUserdir(self, userDir): self.userDir=userDir def getUserDir(self): return self.userDir def setQuota(self, quota): self.quota = int(quota) def getQuota(self): return self.quota def setFiles(self, userFiles): self.userFiles = userFiles def getFiles(self): return self.userFiles
main.py
import os import csv import pathlib import glob import shutil from model import User def getTargetFiles(files, quota): targetFiles = [] if (len(files) > quota): for i in range(0, quota): targetFiles.append(files[i]) return targetFiles; else: return files cwd = os.path.dirname(os.path.realpath(__file__)) csvFile = cwd + '/namelist.csv' nexusDir = "/home/public/led/nexus" namelist = [] with open(csvFile) as csvfile: csvreader = csv.reader(csvfile, delimiter=',') for row in csvreader: user = User(); user.setName(row[0]) user.setQuota(row[1]) namelist.append(user) for user in namelist: userDir = "/home/public/led/{}/".format(user.getName()) user.setUserdir(userDir) if (os.path.isdir(userDir)) == True: files = glob.glob(os.path.join(userDir, '*.jpg')) files.extend(glob.glob(os.path.join(userDir, '*.txt'))) files.extend(glob.glob(os.path.join(userDir, '*.png'))) files.sort(key=os.path.getmtime, reverse=True) targetFiles = [] if len(files) != 0: user.setFiles(getTargetFiles(files, user.getQuota())) if (os.path.isdir(nexusDir)) == True: shutil.rmtree(nexusDir) os.mkdir(nexusDir) else: os.mkdir(nexusDir) for user in namelist: for userFile in user.getFiles(): dest = "{}/{}-{}".format(nexusDir, user.getName(), os.path.basename(userFile)) print(dest) shutil.copy(userFile, dest)