import sys import os import subprocess from datetime import datetime, date, time csvfilename = 'C:/Users/User/Desktop/csvdiskc.csv' def gencsv(csvfilename): filesindir = recursivefilesystem('C:/', 1) csvfile = [bytes('"Номер строки"; "Файл / сгенировано File System Tools {}";"Имя файла";"Каталог";"Тип файла";"Размер (в байтах)";"Дата"'.format(datetime.today().strftime('%d.%m.%Y %H:%M:%S')), 'utf-8')] i = 0 while i < len(filesindir): linenumber = i + 1 filefullpath = filesindir[i].replace('\\', '/') filenamenopath = getfilenamenopath(filefullpath) dirname = directoryup(filefullpath) filetype = getextfile(filenamenopath).upper() filesize = getsizefile(filefullpath) filedate = getdatefile(filefullpath, '%d.%m.%Y %H:%M:%S') csvline = '"{}";"{}";"{}";"{}/";"{}";"{}";"{}"'.format(linenumber, filefullpath.replace('"','""'), filenamenopath.replace('"','""'), dirname.replace('"','""'), filetype.replace('"','""'), filesize, filedate) csvfile.append(bytes(csvline, 'utf-8')) i = i + 1 filesindir = [] f = open(csvfilename, 'wb') f.write(bytes('\n', 'utf-8').join(csvfile)) f.close() csvfile = [] print('Completed!') def recursivefilesystem(dirpath, level): global recursivefiles if level == 1: recursivefiles = [] k = True try: names = os.listdir(dirpath) except: k = False if k: for name in names: try: fullname = os.path.join(dirpath, name) except: fullname = '{}/{}'.format(dirpath, name) if os.path.isdir(fullname): recursivefilesystem(fullname, level + 1) elif os.path.islink(fullname): pass else: recursivefiles.append(fullname) if level == 1: return recursivefiles def getsizefile(file): k = True try: filestat = os.stat(file) except: k = False size = 0 if k: size = filestat.st_size return size def getdatefile(file, format): try: timestamp = os.path.getmtime(file) except: timestamp = 0 filedt = datetime.fromtimestamp(timestamp) try: filedate = filedt.strftime(format) except: timestamp = 0 filedt = datetime.fromtimestamp(timestamp) filedate = filedt.strftime(format) return filedate def directoryup(path): a = path.replace('\\', '/') b = a.split('/') c = '/'.join(b[0:-1]) return c def getfilenamenopath(filename): a = filename.replace('\\', '/') b = a.split('/') c = b[-1] return c def getextfile(filename): a = filename.replace('\\', '/') b = a.split('.') c = b[-1] return c print('START') gencsv(csvfilename)