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

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Y
Y Combinator Blog
Blog — PlanetScale
Blog — PlanetScale
H
Hackread – Cybersecurity News, Data Breaches, AI and More
WordPress大学
WordPress大学
B
Blog RSS Feed
A
About on SuperTechFans
V
Visual Studio Blog
J
Java Code Geeks
U
Unit 42
人人都是产品经理
人人都是产品经理
Martin Fowler
Martin Fowler
Recent Announcements
Recent Announcements
M
MIT News - Artificial intelligence
IT之家
IT之家
The Cloudflare Blog
T
The Blog of Author Tim Ferriss
C
Check Point Blog
博客园 - 叶小钗
P
Proofpoint News Feed
Microsoft Security Blog
Microsoft Security Blog
B
Blog
S
SegmentFault 最新的问题
Microsoft Azure Blog
Microsoft Azure Blog

博客园 - 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': []}]}