惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
C
Check Point Blog
月光博客
月光博客
Y
Y Combinator Blog
I
InfoQ
B
Blog RSS Feed
P
Proofpoint News Feed
腾讯CDC
博客园 - Franky
MyScale Blog
MyScale Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
V2EX
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
云风的 BLOG
云风的 BLOG
罗磊的独立博客
B
Blog
人人都是产品经理
人人都是产品经理
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
Recent Announcements
Recent Announcements
美团技术团队
大猫的无限游戏
大猫的无限游戏

博客园 - guolongnv

useful Claude code skills & plugins bell in bash Anaconda usage tips python编程提升1(问题篇) How p4 get authorized How to format a jason file in vim How to open utfb8 in linux env json 文件查看和编辑 How to change the color display of directories in putty? Screen frequency used commamd How to load yaml file in python How to get IPv4 address Basic mysql command 4. Median of Two Sorted Arrays 42.trapping-rain-water 3.lengthOfLongestSubstring 1.two sum pandas教程 How to make mail more effectively?
python编程提升1(答案篇)
guolongnv · 2022-10-10 · via 博客园 - guolongnv
#!/home/utils/Python/builds/3.9.9-20220110/bin/python3
class Common():
    def __init__(self,name,size=0,parent=None):
        self.name = name
        self.size=size
        self.parent=parent

    def get_full_path(self):
        if self.parent == None:
            return self.name
        return self.parent.get_full_path() + "/" +self.name

    def __str__(self):
        return self.get_full_path()

class File(Common):
    def __init__(self, name,size,parent=None):
        Common.__init__(self,name,size,parent)

    def set_size(self,size):
        self.size = size

    def get_size(self):
        return self.size

    def get_file(self):
        return self.name

class Dir(Common):
    def __init__(self, name,size=0,parent=None):
        Common.__init__(self,name,size,parent)
        self.files={}
        self.dirs={}
        self.size=size

    def get_dir(self):
        return self.name

    def new_file(self,file_name,size=0):
        file=File(file_name,size,self)
        self.files[file_name]=file
        return file

    def new_dir(self,dir_name):
        dir_=Dir(dir_name,parent=self)
        self.dirs[dir_name]=dir_
        return dir_

    def get_size(self):
        for file_name, file in self.files.items():
            self.size+=file.get_size()
        for dir_name, dir in self.dirs.items():
            self.size+=dir.get_size()
        return self.size
#!/home/utils/Python/builds/3.9.9-20220110/bin/python3
class Common:
    def __init__(self, name,size=0):
        self.name = name
        self.size=size

class File(Common):
    def __init__(self, name,size):
        Common.__init__(self,name,size)

    def set_size(self,size):
        self.size = size

    def get_size(self):
        return self.size

    def get_file(self):
        return self.name

class Dir(Common):
    def __init__(self, name):
        Common.__init__(self,name)
        self.files={}
        self.dirs={}
        self.size=0

    def get_dir(self):
        return self.name

    def new_file(self,file_name,size=0):
        file=File(file_name,size)
        self.files[file_name]=file
        return(file)

    def new_dir(self,dir_name):
        dir=Dir(dir_name)
        self.dirs[dir_name]=dir
        return dir

    def get_size(self):
        for file_name, file in self.files.items():
            self.size+=file.get_size()
        for dir_name, dir in self.dirs.items():
            self.size+=dir.get_size()
        return self.size

问题1

Code:

─
#!/home/utils/Python/builds/3.9.9-20220110/bin/python3
class Common:
    def __init__(self, name):
        self.name = name

class File(Common):
    def __init__(self, name):
        Common.__init__(self,name)

    def get_file(self):
        return self.name

class Dir(Common):
    def __init__(self, name):
        Common.__init__(self,name)

                    self.files={}

                    self.dirs={}

    def get_dir(self):
        return self.name

Test:

if __name__ == "__main__":
    file_a=File("a")
    print(file_a.get_file())
    dir_b=Dir("b")
    print(dir_b.get_dir())

Output:

a
b

问题2:

Code:

#!/home/utils/Python/builds/3.9.9-20220110/bin/python3
class Common:
    def __init__(self, name):
        self.name = name

class File(Common):
    def __init__(self, name):
        Common.__init__(self,name)

    def get_file(self):
        return self.name

class Dir(Common):
    def __init__(self, name):
        Common.__init__(self,name)
        self.files={}
        self.dirs={}

    def get_dir(self):
        return self.name

    def new_file(self,file_name):
        file=File(file_name)
        self.files[file_name]=file
        return(file)

    def new_dir(self,dir_name):
        dir=Dir(dir_name)
        self.dirs[dir_name]=dir
        return dir

Test:

if __name__ == "__main__":
    dir_b=Dir("b")
    file_a=dir_b.new_file("a")
    print(file_a.get_file())
    dir_c=dir_b.new_dir("c")
    print(dir_c.get_dir())

Output:

 a
 c

问题:3

Code:

#!/home/utils/Python/builds/3.9.9-20220110/bin/python3
class Common:
    def __init__(self, name,size=0):
        self.name = name
        self.size=size

class File(Common):
    def __init__(self, name,size):
        Common.__init__(self,name,size)

    def set_size(self,size):
        self.size = size

    def get_size(self):
        return self.size

    def get_file(self):
        return self.name

class Dir(Common):
    def __init__(self, name):
        Common.__init__(self,name)
        self.files={}
        self.dirs={}
        self.size=0

    def get_dir(self):
        return self.name

    def new_file(self,file_name,size=0):
        file=File(file_name,size)
        self.files[file_name]=file
        return(file)

    def new_dir(self,dir_name):
        dir=Dir(dir_name)
        self.dirs[dir_name]=dir
        return dir

    def get_size(self):
        for file_name, file in self.files.items():
            self.size+=file.get_size()
        for dir_name, dir in self.dirs.items():
            self.size+=dir.get_size()
        return self.size

Test:

if __name__ == "__main__":
    dir_b=Dir("b")
    file_a=dir_b.new_file("a")
    file_c=dir_b.new_file("c",20)
    dir_d=dir_b.new_dir("d")
    file_e=dir_d.new_file("d",30)
    file_a.set_size(10)
    print(file_a.get_size())
    print(dir_b.get_size())

Output:

10

60

问题4:

code:

─
#!/home/utils/Python/builds/3.9.9-20220110/bin/python3
class Common():
    def __init__(self,name,size=0,parent=None):
        self.name = name
        self.size=size
        self.parent=parent

    def get_full_path(self):
        if self.parent == None:
            return self.name
        return self.parent.get_full_path() + "/" +self.name

class File(Common):
    def __init__(self, name,size,parent=None):
        Common.__init__(self,name,size,parent)

    def set_size(self,size):
        self.size = size

    def get_size(self):
        return self.size

    def get_file(self):
        return self.name

class Dir(Common):
    def __init__(self, name,size=0,parent=None):
        Common.__init__(self,name,size,parent)
        self.files={}
        self.dirs={}
        self.size=size

    def get_dir(self):
        return self.name

    def new_file(self,file_name,size=0):
        file=File(file_name,size,self)
        self.files[file_name]=file
        return file

    def new_dir(self,dir_name):
        dir_=Dir(dir_name,parent=self)
        self.dirs[dir_name]=dir_
        return dir_

    def get_size(self):
        for file_name, file in self.files.items():
            self.size+=file.get_size()
        for dir_name, dir in self.dirs.items():
            self.size+=dir.get_size()
        return self.size

test:

if __name__ == "__main__":
    dir_b=Dir("b")
    file_a=dir_b.new_file("a")
    file_c=dir_b.new_file("c",20)
    dir_d=dir_b.new_dir("d")
    file_e=dir_d.new_file("e",30)
    print(file_e.get_full_path())
    print(dir_d.get_full_path())  

output:

b/d/e
b/d

问题4:

code:

─
#!/home/utils/Python/builds/3.9.9-20220110/bin/python3
class Common():
    def __init__(self,name,size=0,parent=None):
        self.name = name
        self.size=size
        self.parent=parent

    def get_full_path(self):
        if self.parent == None:
            return self.name
        return self.parent.get_full_path() + "/" +self.name

    def __str__(self):
        return self.get_full_path()

class File(Common):
    def __init__(self, name,size,parent=None):
        Common.__init__(self,name,size,parent)

    def set_size(self,size):
        self.size = size

    def get_size(self):
        return self.size

    def get_file(self):
        return self.name

class Dir(Common):
    def __init__(self, name,size=0,parent=None):
        Common.__init__(self,name,size,parent)
        self.files={}
        self.dirs={}
        self.size=size

    def get_dir(self):
        return self.name

    def new_file(self,file_name,size=0):
        file=File(file_name,size,self)
        self.files[file_name]=file
        return file

    def new_dir(self,dir_name):
        dir_=Dir(dir_name,parent=self)
        self.dirs[dir_name]=dir_
        return dir_

    def get_size(self):
        for file_name, file in self.files.items():
            self.size+=file.get_size()
        for dir_name, dir in self.dirs.items():
            self.size+=dir.get_size()
        return self.size

test:

if __name__ == "__main__":
    dir_b=Dir("b")
    file_a=dir_b.new_file("a")
    file_c=dir_b.new_file("c",20)
    dir_d=dir_b.new_dir("d")
    file_e=dir_d.new_file("e",30)
    print(file_e)
    print(dir_d)

output:

b/d/e
b/d

问题6

code:

class Common():
    def __init__(self,name,size=0,parent=None):
        self.name = name
        self.size=size
        self.parent=parent

    def get_full_path(self):
        if self.parent == None:
            return self.name
        return self.parent.get_full_path() + "/" +self.name

    def __str__(self):
        return self.get_full_path()

class File(Common):
    def __init__(self, name,size,parent=None):
        Common.__init__(self,name,size,parent)

    def set_size(self,size):
        self.size = size

    def get_size(self):
        return self.size

    def get_file(self):
        return self.name

class Dir(Common):
    def __init__(self, name,size=0,parent=None):
        Common.__init__(self,name,size,parent)
        self.files={}
        self.dirs={}
        self.size=size

    def get_dir(self):
        return self.name

    def new_file(self,file_name,size=0):
        file=File(file_name,size,self)
        self.files[file_name]=file
        return file

    def new_dir(self,dir_name):
        dir_=Dir(dir_name,parent=self)
        self.dirs[dir_name]=dir_
        return dir_

    def get_size(self):
        for file_name, file in self.files.items():
            self.size+=file.get_size()
        for dir_name, dir in self.dirs.items():
            self.size+=dir.get_size()
        return self.size

    def get_files_count(self):
        count=0
        for file_name, file in self.files.items():
            count += 1
        for dir_name, dir in self.dirs.items():
            count += dir.get_files_count()
        return count

test:

if __name__ == "__main__":
    dir_b=Dir("b")
    file_a=dir_b.new_file("a")
    file_c=dir_b.new_file("c",20)
    dir_d=dir_b.new_dir("d")
    file_e=dir_d.new_file("e",30)
    print(dir_b.get_files_count())

output:

 3

问题7

code:

    def ls(self):
        files=[]
        dirs=[]
        for file_name, file in self.files.items():
            files.append(file_name)
        for dir_name, dir_ in self.dirs.items():
            dirs.append(dir_name)
        return {"files":files, "dirs":dirs}

test:

if __name__ == "__main__":
    dir_b=Dir("b")
    file_a=dir_b.new_file("a")
    file_c=dir_b.new_file("c",20)
    dir_d=dir_b.new_dir("d")
    file_e=dir_d.new_file("e",30)
    print(dir_b.ls())

output:

{'files': ['a', 'c'], 'dirs': ['d']} 

问题8

code:

class File(Common):
...
    def dump(self):
        return {"name": self.name, "size": self.size}

class Dir(Common):
...
    def dump(self):
        files=[]
        dirs=[]
        for file_name, file in self.files.items():
            files.append(file.dump())
        for dir_name, dir_ in self.dirs.items():
            dirs.append(dir_.dump())
        return {"name": self.name, "files": files, "dirs": dirs}

test:

if __name__ == "__main__":
    dir_b=Dir("b")
    file_a=dir_b.new_file("a")
    file_c=dir_b.new_file("c",20)
    dir_d=dir_b.new_dir("d")
    file_e=dir_d.new_file("e",30)
    print(file_e.dump())
    print(dir_b.dump())

output:

{'name': 'e', 'size': 30}
{'name': 'b', 'files': [{'name': 'a', 'size': 0}, {'name': 'c', 'size': 20}], 'dirs': [{'name': 'd', 'files': [{'name': 'e', 'size': 30}], 'dirs': []}]}

问题9:

code:

class Common():
    def __init__(self,name="",size=0,parent=None,info=None):
        self.name=name
        self.size=size
        self.parent=parent

    def get_full_path(self):
        if self.parent == None:
            return self.name
        return self.parent.get_full_path() + "/" +self.name

    def __str__(self):
        return self.get_full_path()

class File(Common):
    def __init__(self,name="",size=0,parent=None,info=None):
        Common.__init__(self,name,size,parent)
        if info != None:
            self._load(info)

    def _load(self,info):
        self.name=info["name"]
        self.size=info["size"]

    def set_size(self,size):
        self.size = size

    def get_size(self):
        return self.size

    def get_file(self):
        return self.name

    def dump(self):
        return {"name": self.name, "size": self.size}

class Dir(Common):
    def __init__(self,name="",size=0,parent=None,info=None):
        Common.__init__(self,name,size,parent,info)
        self.files={}
        self.dirs={}
        self.size=size
        if info != None :
            self._load(info)

    def _load(self, info):
        self.name=info["name"]
        for file_info in info["files"]:
            new_file=File(info=file_info)
            self.files[new_file.name]=new_file

        for dir_info in info["dirs"]:
            new_dir=Dir(info=dir_info)
            self.dirs[new_dir.name]=new_dir

    def get_dir(self):
        return self.name

    def new_file(self,file_name,size=0):
        file=File(file_name,size,self)
        self.files[file_name]=file
        return file

    def new_dir(self,dir_name):
        dir_=Dir(dir_name,parent=self)
        self.dirs[dir_name]=dir_
        return dir_

    def dump(self):
        files=[]
        dirs=[]
        for file_name, file in self.files.items():
            files.append(file.dump())
        for dir_name, dir_ in self.dirs.items():
            dirs.append(dir_.dump())
        return {"name": self.name, "files": files, "dirs": dirs}

test:

if __name__ == "__main__":
    dir_b=Dir("b")
    file_a=dir_b.new_file("a")
    file_c=dir_b.new_file("c",20)
    dir_d=dir_b.new_dir("d")
    file_e=dir_d.new_file("e",30)
    file_e1=File(info=file_e.dump())
    print(file_e.dump())
    print(file_e1)
    print(file_e1.dump())
    print(dir_b.dump())
    dir_b1=Dir(info=dir_b.dump())
    print(dir_b1)
    print(dir_b1.dump())

output:

{'name': 'e', 'size': 30}
e
{'name': 'e', 'size': 30}
{'name': 'b', 'files': [{'name': 'a', 'size': 0}, {'name': 'c', 'size': 20}], 'dirs': [{'name': 'd', 'files': [{'name': 'e', 'size': 30}], 'dirs': []}]}
b
{'name': 'b', 'files': [{'name': 'a', 'size': 0}, {'name': 'c', 'size': 20}], 'dirs': [{'name': 'd', 'files': [{'name': 'e', 'size': 30}], 'dirs': []}]}