[精讚] [會員登入]
890

找尋多個文件夾中最新檔案(jpg,png,txt)並複製到nexus資料夾

找尋多個文件夾中最新檔案(jpg,png,txt)並複製到集中資料夾

分享此文連結 //n.sfs.tw/13121

分享連結 找尋多個文件夾中最新檔案(jpg,png,txt)並複製到nexus資料夾@igogo
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-02-21 14:34:29 最後編修
2019-02-21 14:16:37 By igogo
 

 

目的

從一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)

 

END

你可能感興趣的文章

python 的RE python re

找尋多個文件夾中最新檔案(jpg,png,txt)並複製到nexus資料夾 找尋多個文件夾中最新檔案(jpg,png,txt)並複製到集中資料夾

python 解析資料, 輸入並輸出 database, csv, pdf(二) 延續上篇 https://n.sfs.tw/content/index/16452 parse html class B

00-F2 的 IPV6 反解設定 近日, 強者我的大神同事, line 傳來一句: igogo 上次你那個ipv6的設定檔 再幫我跑一次 如連結 程式都寫

python+curl 爬資料(一) 需要某網站資料抓回來統計,結果當然沒我想的那麼簡單, 程式跑一跑就撈回來 光這裡就卡好久, 後來觀察cookie 從 c

隨機好文

hoc2018灑水機器人 灑水機器人的工作是替行道樹灑水,機器人的灑水範圍有限(左前方、左方、左後方),請寫程式控制機器 人判斷須灑水的狀況。每顆

ubuntu ufw ufw 簡易筆記 原則禁止,例外開放 ufw default deny 啟動ufw sudo ufw enable 關掉

google sheet 限制使用者以點選的方式填答 google sheet 限制使用者以點選的方式填答

spring boot 使用jdbc連接mariadb spring boot, mariadb, jdbc, rowmapper