[精讚] [會員登入]
339

找尋多個文件夾中最新檔案(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

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

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

我有話要說

>>

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

訪客留言

[無留言]

隨機好文

利用maven建立一個可執行的jar檔 利用maven建立一個可執行的jar檔

資料表更改為多個primary key, MariaDB [database]> describe TABLENAME; 想由本來是兩個PRIMARY KE

2018 hoc 掃地機器人 掃地機器人只能打掃沒有障礙物(桌椅、牆壁)的範圍,請寫程式控制機器人打掃餐廳的所有走道, 並在清掃完畢後回到充電器。

臺中市雲端校務系統與Windows AD帳號整合(5) 安裝java環境

雲端校務系統與OPENLDAP帳號整合(1) 本文件目標是為做單一帳號整合, 使用校端更改密碼服務, 將雲端校務系統的帳密同步至校內LDAP server, 並讓SA