首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实施FileSystem

实施FileSystem
EN

Stack Overflow用户
提问于 2020-08-27 10:21:44
回答 1查看 102关注 0票数 3

我让一家公司给我分配了一个任务,让我实现一个fileSystem类,以便在不使用任何库的情况下通过python运行外壳命令。有没有人对如何入门有什么建议?不太确定如何解决这个问题。

问题:

使用python实现一个FileSystem类

根路径为'/‘。

路径分隔符是“/”。

父目录可寻址为'..‘。

目录名称仅由英文字母组成(A-Z和a-z)。

所有函数都应该同时支持相对路径和绝对路径。所有函数参数都是最低要求/推荐参数。可以添加任何附加的类/函数。

到目前为止,我所做的工作如下:

代码语言:javascript
复制
class Path:

    def __init__(self, path):
        self.current_path = path.split("/")
    
    def cd(self, new_path):
        new_split = new_path.split("/")
        for i in new_split:
            if i == "..":
                new_split.pop(0)
                self.current_path = self.current_path[:-1]
        self.current_path += new_split

    def getString(self):
        return "/".join(self.current_path)

    def pwd(self, path):
        return self.current_path

    def mkdir(): 
        pass

    def rmdir():
        pass

#driver code 

fs = Path()
fs.mkdir('usr')
fs.cd('usr')
fs.mkdir('local')
fs.cd('local')
return fs.pwd()
EN

回答 1

Stack Overflow用户

发布于 2020-09-01 10:36:05

所以,这就是我想出来的。我知道我需要把它清理干净

“”“

代码语言:javascript
复制
class Path:

    dir_stack = []

    def __init__(self):
        print("started")
        main_dir = {'/': {}}
        self.dir_stack.insert( len(self.dir_stack), main_dir)

    def getCurrentMap():
        global current_Level
        current_Level = self.dir_stack[len(self.dir_stack) - 1]

   
    def cd(self, folder):
        if(folder == '../'):
         self.dir_stack.pop()

        current_Level = self.dir_stack[len(self.dir_stack) - 1]
        current_Map = current_Level[(list(current_Level.keys())[0])]
        print('lev', current_Map)
        if folder in current_Map:
            print('here')
            self.dir_stack.insert(len(self.dir_stack), current_Map)
        else:
            print ("no existing folder")

    def pwd(self):
        path = ''
        print(self.dir_stack)
        for x in self.dir_stack:
            path += (list(x.keys())[0]) + '/'
        print(path)

    def ls(self):
        current_Level = self.dir_stack[len(self.dir_stack) - 1]
        current_Map = current_Level[(list(current_Level.keys())[0])]
        print(current_Map)


    def mkdir(self, folder_Name):
        current_Level = self.dir_stack[len(self.dir_stack) - 1]
        newDir = {folder_Name: {}}
        current_Map = current_Level[(list(current_Level.keys())[0])]
       
        if folder_Name in current_Map:
         warning = folder_Name +  ' already exists in directory'
         print(warning)
        else:
         current_Map.update(newDir)
 
    def rmdir(self, folder_Name):
        current_Level = self.dir_stack[len(self.dir_stack) - 1]
        #make global var current_Map
        current_Map = current_Level[(list(current_Level.keys())[0])]  
        if folder_Name in current_Map:
          del current_Map[folder_Name]
        else:
            print('folder doesnt exist')


# driver code


fs = Path()
fs.mkdir('usr')
fs.mkdir('new')
fs.mkdir('files')
fs.cd('usr')
fs.mkdir('local')
fs.cd('new')
fs.pwd()
fs.cd('../')
fs.ls()
# fs.mkdir('local')
# fs.cd('local')
fs.pwd()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63608201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档