Pythonで再帰的にファイルを探し、ファイルのタイムスタンプを得る

大量にあるファイル・フォルダの中から「count.dat」というファイルのタイムスタンプを調べて、どのフォルダのソフトが稼働中なのか調べたかった。Dosのコマンドでできるかと思ったができなさそうなので、書いた

#!/usr/bin/python3
"""

 Python tools
 
 Python3 OS:Windows or Linux

 DATE        VER   NAME     COMMENT
 2020/02/06  0.00  garyo  NEW

"""

import tkinter as tk
from tkinter import messagebox
import tkinter.simpledialog as sim
import datetime
import os
import glob
import subprocess
from tkinter import filedialog as tkFileDialog
import time

class PyTool():
    
    VERSION = "0.00"
    logFilename = "log.csv"

    #def __init__(self):

    def addRoot(self):    
        self.root = tk.Tk()
        self.root.withdraw()  

    def setRoot(self,root):    
        self.root = root

#I/O
    def inputBox(self,msg):
        tmp = sim.askstring("Input Box",msg,initialvalue = "")
        return tmp

    def messageBox(self,msg):
        messagebox.showinfo("message",msg)

#Log
    def setLogFilename(self,filename):
        self.logFilename = filename

    def logPrint(self,s):
        f = open(self.logFilename,'a')
        f.write(s)
        f.close()

    def logPrintln(self,s):
        self.logPrint(s + "\n")

#Date/Time
    def getDate(self):
        return datetime.datetime.now().strftime('%Y/%m/%d')

    def getTime(self):
        return datetime.datetime.now().strftime('%H:%M:%S')

    def timer(self):
        return  (time.time())

    def waitt(self,s):
        time.sleep(s)

#String
    def left(self,text, n):
        return text[:n]

    def right(self,text, n):
        return text[-n:]

    def mid(self,text, n, m):
        return text[n-1:n+m-1]

#File
    def appPath(self):
        return (os.getcwd())

    def dir(self,filepath):
        return (os.path.exists(filepath))

    def getPath(self,filepath):
        return (os.path.dirname(filepath))

    def getFilename(self,filepath):
        return (os.path.basename(filepath))

    def pathJoin(self,path,filename):
        return (os.path.join(path,filename))

    def makeDir(self,filename):
        if os.path.exists(filename) == False:
            os.makedirs(os.path.dirname(filename),exist_ok = True)        

    def getFileList(self,path,filename):
        #print("glob.glob(" + self.pathJoin(os.path.dirname(path) + "/**/",filename) + ")") 
        return (glob.glob(self.pathJoin(os.path.dirname(path) + "/**/",filename), recursive=True))

    def openFileDialog(self,iDir = "."):
        #fTyp=[('Text File','*.txt')]
        fTyp=[('DAT FILE','*.dat'),('ALL FILE','*.*')]

        #iDir='/home/garyo'  #iDir='c:/' #Windows
            
        #askopenfilename
        filename = tkFileDialog.askopenfilename(filetypes=fTyp,initialdir=iDir)
        return (filename)

    def openFolderDialog(self,iDir = "."):

        dirname = tkFileDialog.askdirectory(initialdir=iDir)
        return (dirname)



#shell
    def shell(self,cmd):
        return(subprocess.getoutput(cmd))



class TextFile:

    def __init__(self):
        self.filename = ""
        self.lines = []

    def clear(self):
        self.lines = []

    def count(self):
        return (len(self.lines))

    def items(self,n):
        return (self.lines[n])

    def add(self,d):
        self.lines.append(d)

    def csvRead(self,s,x):
        v=[]
        v = s.split(',')
        return v[x]

    def itemsXY(self,x,y):
        return csvRead(self,self.lines[y],x)

    def read(self):
        self.clear()
        return (self.readAppend())

    def write(self):
        if os.path.exists(self.filename) == False:
            os.makedirs(os.path.dirname(self.filename),exist_ok = True)

        f = open(self.filename,'w')
        f.writelines(self.lines)
        f.close()

    def printlines(self):
        for line in self.lines:
            print(line)

    def readAppend(self):
        if os.path.exists(self.filename) == True:
            f = open(self.filename,'r')
            self.lines = f.readlines()
            f.close()
            return (True)
        else:
            return (False)

    def writeAppend(self):
        if os.path.exists(self.filename) == False:
            os.makedirs(os.path.dirname(self.filename),exist_ok = True)
            
        f = open(self.filename,'a')
        f.writelines(self.lines)
        f.close()

    def writeAppend1Line(self,msg):
        mode = "a"
        if os.path.exists(self.filename) == False:
            os.makedirs(os.path.dirname(self.filename),exist_ok = True)
            mode = "w"
        f = open(self.filename,mode)
        f.write(msg)
        f.close()
        

if __name__ == "__main__":

    pt = PyTool()
    pt.addRoot()

    tf = TextFile()
    tf.filename = "./fileList.csv"

    flist = pt.getFileList(pt.appPath(),"count.dat")
    for f in flist:
        s = datetime.datetime.fromtimestamp(os.path.getmtime(f)).strftime('%Y/%m/%d,%H:%M:%S') + "," + f
        tf.add(s + "\n")

    tf.write()
    
    print("END")


コメント

このブログの人気の投稿

Python OpenCVとWebカメラでバーコードリーダー

OpenCV 画像の足し算

OpenCV3とPython3で形状のある物体の輪郭と方向を認識する(主成分分析:PCA、固有ベクトル)