我正在编写一些简单的类,比如“在内存中类似linux的文件系统”,用于教育目的。文件将作为StringIO对象。我无法决定如何在Python中实现文件-文件夹层次结构类型。我在考虑使用带有字段的对象列表: type,name,parent还有什么?也许我应该找找树和图。
更新:
将会有这些方法:
New_dir(路径)、dir_list(路径)、is_file(路径)、is_dir(路径)、remove(路径)、read( file_descr )、file_descr open(file_path、mode=w|r)、close(file_descr)、write(file_descr、str)
发布于 2011-12-14 17:06:34
将树表示为一组嵌套的列表是完全可能的。但是,由于条目通常是按名称编制索引的,并且目录通常被认为是无序的,因此嵌套字典将使许多操作更快、更容易编写。
我不会存储每个条目的父条目,这是隐含的,因为它在层次结构中的位置。
此外,如果您希望您的虚拟文件系统有效地支持hard links,则需要将文件内容与目录层次结构分开。这样,您就可以通过为每个内容赋予任意数量的名称来重用内容,这就是硬链接所做的事情。
发布于 2011-12-14 17:05:33
也许你可以尝试使用networkx。你只需凭直觉来调整它,使其与文件和文件夹一起使用。
一个简单的例子
import os,networkx as nx
G=nx.Graph()
for (path, dirs, files) in os.walk(os.getcwd()):
bname = os.path.split(path)
for f in files:
G.add_edge(bname,f)
# Now do what ever you want with the Graph发布于 2011-12-14 17:18:27
你应该首先问这个问题:我的“文件系统”应该支持什么操作?
根据答案选择数据表示。
例如,如果您选择仅支持create和delete,并且字典中文件的顺序并不重要,那么请选择python字典。字典将文件名(子路径名)映射到字典或文件容器对象。
https://stackoverflow.com/questions/8501756
复制相似问题