[精讚] [會員登入]
332

找尋多個文件夾中最新檔案(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)並複製到集中資料夾

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

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

java-身份証字號驗証 FormatCheck.java public class FormatCheck { private volatile

tmux 將終端機切割成多個視 窗 tmux, multiple terminal

centos 7 移机出現 dracut-initqueue timeout centos 7 移机出現 dracut-initqueue timeout 處理

2018 hoc 頒獎 校慶到了,啦啦隊比賽如火如荼展開,學務主任將頒發獎狀給表現優異的班級。請完成以下程式碼,讓程式將啦啦隊表演成績由高至低依序輸出。

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