[精讚] [會員登入]
402

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

你可能感興趣的文章

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

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

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

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

python 的RE python re

我有話要說

>>

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

訪客留言

[無留言]

隨機好文

[vue.js] 動態的props 做parent-child components 雙向綁定 vue.js props components camel-case

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

proxmox lxc 救援 今天突然接到一名強者我朋友的臨時求援 他說他把pve 從5.1升到5.2後, kvm的虛擬机器都沒問題 , 但是lxc的

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

讀取特定資料夾下的xls檔 讀取特定資料夾下的xls檔