Exemple #1
0
  def getFilesFromBasePath(self, folderList, hiddenFiles):
    self.list_panel1.list_ctrl.DeleteAllItems()
    files=self.list_panel1.list_ctrl.data
    files.clear()
    ec=insertErrorCollector(self)

    wx.BeginBusyCursor()
    wx.Yield()

    for i in folderList:
      try:
        f=os.listdir(i)
      except:
        ec.add(2, i)
        continue
      for j in f:
        if j[0]=="." and hiddenFiles==0:  # wenn hiddenFile und unerwünscht
          continue                        # dann überspringen
        try:
          fn=os.path.join(i, j)
        except:
          ec.add(2, hlp.forceUTF8(i)+"/"+hlp.forceUTF8(j))
          continue

        if files.isValid(fn)==False:
          ec.add(2, fn)
          continue

        size, sizeAdj, errors=self._getFileSize(fn)
        if errors!="":
          ec.add(2, errors)
          errFlag=True
        else:
          errFlag=False

        sizeAdj+=self.getDirectorySize(j)

        rc=files.insertFileOrFolder(fn, size, sizeAdj, errFlag)
        ec.add(rc, fn)
        wx.Yield()
    self.fillListCtrl(self.list_panel1.list_ctrl, 1)
    ec.show()
    wx.EndBusyCursor()
    wx.Yield()
Exemple #2
0
  def _getFileSize(self, fileOrFolder, errors=""):
    fileSize=fileSizeAdj=0
    if ignore_symlinks_g==True and os.path.islink(fileOrFolder)==True:
      #print "link:", fileOrFolder#, os.path.getsize(fileOrFolder)
      pass
    elif os.path.isfile(fileOrFolder)==True:
      # -----------------------------------------
      # ----------------- Datei -----------------
      fileSize=os.path.getsize(fileOrFolder)
      if fileSize==0:                 # auch 0-Byte-Dateien...
        fileSizeAdj+=self.blockSize   # ...belegen einen Block
      else:
        fileSizeAdj=self.__adjustToBlockSize(fileSize)

      if self.addblock&1==1:                            # JolietRR  genisoimage -r -J
        pass
      if self.addblock&2==2:                            # UDF(1.02) genisoimage -udf
        fileSizeAdj+=self.blockSize
      if self.addblock&4==4:                            # UDF(2.01) mkudffs
        if fileSize>1832:                               # bei Dateien größer als 1832 Byte...
          fileSizeAdj+=self.blockSize                   # muss ein zusätzlicher Block reserviert werden
    elif os.path.isdir(fileOrFolder)==True:
      # -----------------------------------------
      # -------------- Verzeichnis --------------
      fileSizeAdj+=self.blockSize

      if self.addblock&1==1:                            # JolietRR  genisoimage -r -J
        fileSizeAdj+=self.blockSize
      if self.addblock&2==2:                            # UDF(1.02) genisoimage -udf
        fileSizeAdj+=(2*self.blockSize)

      try:
        fileOrFolderList=os.listdir(fileOrFolder)
      except:
        errors+="\n\t"+hlp.forceUTF8(fileOrFolder)
        return("error", "error", errors)

      dirsize=[0, 0, 0, 0, 0, 0] # 0:FAT32, 1:ISO9660, 2:Joliet(long), 3:Rock Ridge, 4:UDF1.02, 5:UDF2.01
      len_fofl=len(fileOrFolderList)
      for fileOrFolderSub in fileOrFolderList:  # Platzbedarf im Directory für Verzeichnis-Inhalt ermitteln
        try:
          fullname=os.path.join(fileOrFolder, fileOrFolderSub)
        except:
          # der Fehler wird weiter unten an "errors" übergeben
          continue
        isdir=os.path.isdir(fullname)
        dirsize_cur=self.getDirectorySizeV21(fileOrFolderSub, isdir, len_fofl)
        for i in range(len(dirsize)):
          dirsize[i]+=dirsize_cur[i]
      #print "dirsize={0:10} anzFiles={1:5} dir=".format(dirsize, len(fileOrFolderList)), fileOrFolder

      for i in range(len(dirsize)):
        if dirsize[i]>self.blockSize:
          fileSizeAdj+=self.__adjustToBlockSize(dirsize[i]-self.blockSize)
          if i==5 and self.addblock&4==4: # bei UDF(2.01)...
            fileSizeAdj+=self.blockSize   # nach dem ersten zusätzlichen Block, gleich noch einen weiteren reservieren

      for fileOrFolderSub in fileOrFolderList:
        try:
          fileOrFolderFullPath=os.path.join(fileOrFolder, fileOrFolderSub)
        except:
          errors+="\n\t"+hlp.forceUTF8(fileOrFolder)+"/"+hlp.forceUTF8(fileOrFolderSub)
          continue
        curSize, curSizeAdj, errors=self._getFileSize(fileOrFolderFullPath, errors)
        if type(curSize) in (int, long):    fileSize+=curSize
        if type(curSizeAdj) in (int, long): fileSizeAdj+=curSizeAdj
    else:
      errors+="\n\t"+hlp.forceUTF8(fileOrFolder)
    return(fileSize, fileSizeAdj, errors)