gpt4 book ai didi

filesystems - 实现文件系统

转载 作者:行者123 更新时间:2023-12-04 03:57:30 25 4
gpt4 key购买 nike

我有一家公司给我分配了一个任务来实现一个文件系统类,以便在不使用任何库的情况下通过 python 运行 shell 命令。有人对如何开始有任何建议吗?不太确定如何解决这个问题。

问题:

使用python实现一个FileSystem类

根路径是'/'。
路径分隔符是“/”。
父目录可寻址为“..”。
目录名称仅包含英文字母(A-Z 和 a-z)。
所有函数都应该支持相对路径和绝对路径。所有功能参数均为最低要求/推荐参数。可以添加任何额外的类/函数。

到目前为止我做了什么:

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()

最佳答案

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

'''

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()

关于filesystems - 实现文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63608201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com