#coding: utf-8 #文件大小类 class FileSize(): SIZE_UNIT={"Byte":1,"KB":1024,"MB":1048576,"GB":1073741824,"TB":1099511627776L} def __init__(self,size): self.size=long(FileSize.Format(size)) @staticmethod def Format(size): import re if isinstance(size,int) or isinstance(size,long): return size else: if not isinstance(size,str): return 0 else: oSize=size.lstrip().upper().replace(" ","") pattern=re.compile(r"(\d*\.?(?=\d)\d*)(byte|kb|mb|gb|tb)",re.I) match=pattern.match(oSize) if match: m_size, m_unit=match.groups() if m_size.find(".")==-1: m_size=long(m_size) else: m_size=float(m_size) if m_unit!="BYTE": return m_size*FileSize.SIZE_UNIT[m_unit] else: return m_size else: return 0 #返回字节为单位的值 @property def size(self): return self.size @size.setter def size(self,newsize): try: self.size=long(newsize) except: self.size=0 #返回带单位的自动值 @property def FriendValue(self): if self.sizeother.size: return True else: return False else: if self.size>FileSize(other).size: return True else: return False def __lt__(self, other): if isinstance(other,FileSize): if other.size>self.size: return True else: return False else: if FileSize(other).size > self.size: return True else: return False def __ge__(self, other): if isinstance(other,FileSize): if self.size>=other.size: return True else: return False else: if self.size>=FileSize(other).size: return True else: return False def __le__(self, other): if isinstance(other,FileSize): if other.size>=self.size: return True else: return False else: if FileSize(other).size >= self.size: return True else: return False