首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表示文件系统表

表示文件系统表
EN

Stack Overflow用户
提问于 2011-12-14 16:59:17
回答 4查看 804关注 0票数 1

我正在编写一些简单的类,比如“在内存中类似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)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-14 17:06:34

将树表示为一组嵌套的列表是完全可能的。但是,由于条目通常是按名称编制索引的,并且目录通常被认为是无序的,因此嵌套字典将使许多操作更快、更容易编写。

我不会存储每个条目的父条目,这是隐含的,因为它在层次结构中的位置。

此外,如果您希望您的虚拟文件系统有效地支持hard links,则需要将文件内容与目录层次结构分开。这样,您就可以通过为每个内容赋予任意数量的名称来重用内容,这就是硬链接所做的事情。

票数 1
EN

Stack Overflow用户

发布于 2011-12-14 17:05:33

也许你可以尝试使用networkx。你只需凭直觉来调整它,使其与文件和文件夹一起使用。

一个简单的例子

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2011-12-14 17:18:27

你应该首先问这个问题:我的“文件系统”应该支持什么操作?

根据答案选择数据表示。

例如,如果您选择仅支持createdelete,并且字典中文件的顺序并不重要,那么请选择python字典。字典将文件名(子路径名)映射到字典或文件容器对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8501756

复制
相关文章

相似问题

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