def __init__(self, row, master=None, font=None, relativePath=None):
     ListItem.__init__(self, row, master, font, name=relativePath)
     # Add extra properties
     self.addProperty('Type')
     self.addProperty('Size')
     self.addProperty('Modified')
     self.addProperty('RealDate', False)
     # Use unix timestamp to sort by modify time rather than the date string
     self.addSortOverride('Modified', 'RealDate')
     # Set file type
     if path.isFolder(relativePath):
         self.setPropertyValue('Type', 'Folder')
     elif len(relativePath.split('.')) == 1:
         self.setPropertyValue('Type', 'File')
     else:
         self.setPropertyValue(
             'Type', '{} File'.format(relativePath.split('.')[-1]))
     # Set file size
     a = os.stat(relativePath)
     b = a.st_size
     if b < 1024:
         c = str(b) + ' B'
     elif b < 1048576:
         c = str(b / 1024) + ' KB'
     elif b < 1073741824:
         c = str(b / 1048576) + ' MB'
     else:
         c = str(b / 1073741824) + ' GB'
     self.setPropertyValue('Size', c)
     #Get modified date and timestamp
     self.setPropertyValue('RealDate', str(a._integer_mtime))
     self.setPropertyValue(
         'Modified',
         datetime.datetime.fromtimestamp(
             a._integer_mtime).__format__('%m/%d/%Y %I:%M:%S %p'))
 def pathEntered(self, event=None):
     a = os.path.expandvars(self.pathbox.get('0.0', tk.END)[:-1])
     if path.isFolder(a):
         self.changeDirectory(a)
     elif path.isFile(a):
         self._returnVariable.set([os.getcwd() + '\\' + a])
     else:
         self.notfound(a)
     return 'break'
 def _dbClick(self, event=None):
     a = self.getFileboxItem(self.getFileboxSelection()[0])
     if path.isFolder(a):
         self.changeDirectory(a)
     else:
         self._returnVariable.set([
             os.getcwd() + '\\' +
             self.getFileboxItem(self.getFileboxSelection()[0])
         ])
 def returnSelected(self, event=None):
     a = self.getFileboxSelection()
     if len(a) == 0:
         return
     if event != None:
         if len(a) == 1:
             self._dbClick()
             return
         elif self._mode != MIXED:
             for x in a:
                 if path.isFolder(self.getFileboxItem(x)):
                     return
     b = [os.getcwd() + '\\' + self.getFileboxItem(x) for x in a]
     for x in b:
         try:
             os.stat(x)
         except Exception as e:
             self.fileError(x, e)
     self._returnVariable.set(b)
示例#5
0
def get_tree(dir):
    files_folders = os.listdir(dir)
    all_files = []
    all_folders = []
    dir_a = str(pathlib.Path(dir).absolute())

    for x in files_folders:
        file_extension = os.path.splitext(dir + x)[1]
        edir = dir_a + "/" + x
        if (isFolder(edir)):
            all_folders.append({
                'foldername': x,
                "folderdir": dir_a + "/" + x,
                'Parentdir': dir_a,
                'checked': False
            })
        elif (isFile_exist(edir)):
            all_files.append({
                'filename': x,
                'filedir': dir_a,
                'filext': file_extension,
                'parentFoldername': os.path.basename(dir_a)
            })
        else:
            critical_info("i have no idea wtf happend {DEBUG TIME}")

    #here the painfull recursion experience
    for x in all_folders:
        if (not x["checked"]):
            all_files_recursion, all_folders_recursion = get_tree(
                x["folderdir"])
            all_files = all_files + all_files_recursion
            all_folders = all_folders + all_folders_recursion
            x["checked"] = True

    return all_files, all_folders
示例#6
0
def check_dir(dir):
    return isFolder(dir)