跳转到主要内容

基于nodes的文件系统目录抽象

项目描述

node.ext.directory

Latest PyPI version Number of PyPI downloads Test node.ext.directory

维护模式

此包处于维护模式。此包的后续版本为https://pypi.python.org/pypi/node.ext.fs

概述

node.ext.directory是文件系统目录的node实现。

有关node的更多信息,请参阅https://pypi.python.org/pypi/node

用法

创建新文件

from node.ext.directory import File

file_path = 'file.txt'
f = File(name=file_path)

# set contents via data attribute
f.data = 'data\n'

# set contents via lines attribute
f.lines = ['data']

# set permissions
f.fs_mode = 0o644

# persist
f()

读取现有文件

file_path = 'file.txt'
f = File(name=file_path)

assert(f.data == 'data\n')
assert(f.lines == ['data'])
assert(f.fs_mode == 0o644)

包含二进制数据的文件

from node.ext.directory import MODE_BINARY

file_path = 'file.txt'
f = File(name=file_path)
f.mode = MODE_BINARY

f.data = b'\x00\x00'

assert(f.data == b'\x00\x00')

# lines property won't work if file in binary mode
f.lines  # raises RuntimeError

创建目录

from node.ext.directory import Directory

dir_path = '.'
d = Directory(name=dir_path)

# add subdirectories and files
d['sub'] = Directory()
d['file.txt'] = File()

# set permissions for directory
d['sub'].fs_mode = 0o755

# persist
d()

读取现有目录

dir_path = '.'
d = Directory(name=dir_path)
>>> d.printtree()
<class 'node.ext.directory.directory.Directory'>: .
  <class 'node.ext.directory.directory.File'>: file.txt
  <class 'node.ext.directory.directory.Directory'>: sub

定义文件工厂

from node.ext import directory

class PyFile(File):
    pass

# set global factories
directory.file_factories['.py'] = PyFile

# set local factories
d = Directory(name='.', factories={'.py': PyFile})

当读取.py文件时,使用PyFile实例化子节点

>>> with open('foo.py', 'w') as f:
...     f.write('#')

>>> d = Directory(name='.', factories={'.py': PyFile})
>>> d.printtree()
<class 'node.ext.directory.directory.Directory'>: .
  <class '...PyFile'>: foo.py

Python版本

  • Python 2.7, 3.7+

  • 可能与其他版本兼容(未测试)

贡献者

  • Robert Niederreiter(作者)

更改

0.8.1 (2024-05-23)

  • 修复已弃用的导入。[rnix]

  • 添加关于后续包的注释。[rnix]

0.8 (2022-03-21)

  • MappingNode替换已弃用的Nodify的使用。[rnix]

  • 将废弃的Adopt用法替换为MappingAdopt。[rnix]

0.7

  • 支持Python 3。[rnix, 2017-06-06]

  • 如果文件或目录存在且fs_mode未明确设置,则从文件系统中读取fs_mode。[rnix, 2017-06-06]

  • IDirectory接口中删除backup选项。它从未真正正常工作过,并且从概念上讲,IDirectory不是处理文件备份的正确位置。[rnix, 2017-06-04]

0.6

  • 引入node.ext.directory.interfaces.IFile.direct_sync设置。[rnix, 2017-01-30]

  • 完成node.ext.directory.interfaces.IFilenode.ext.directory.interfaces.IDirectory以反映实现的功能。[rnix, 2017-01-30]

  • node.ext.directory.directory.MODE_TEXTnode.ext.directory.directory.MODE_BINARY移动到node.ext.directory.interfaces。[rnix, 2017-01-30]

0.5.4

  • node.ext.directory.FileStorage.__call__中通过名称检查要持久化的目录是否已作为文件存在。[rnix, 2015-10-05]

  • 如果fs_path不存在,则在node.ext.directory.FileStorage.__call__中实现回退到path。[rnix, 2015-10-05]

  • 如果fs_path不存在,则在node.ext.directory.FileStorage._get_data中实现回退到path。[rnix, 2015-10-05]

  • node.ext.directory.FileStorage._get_mode中使用self.mode属性设置器而不是内部self._mode来设置初始模式。[rnix, 2015-10-05]

0.5.3

  • __call__之后从内部引用中删除已删除的键,以便在再次添加具有相同键的文件或目录时返回正确的结果。[rnix, 2015-07-20]

0.5.2

  • 使用try/except而不是迭代来检查目录子项是否已在内存中。[rnix, 2015-05-12]

0.5.1

  • 始终使用os.chmod来设置目录权限,而不仅仅是如果已存在。[rnix, 2015-03-03]

0.5

  • 在目录和文件上引入fs_mode。[rnix, 2015-03-03]

0.4

  • 如果无数据,则在File.lines中返回空列表。[rnix, 2015-02-18]

  • 考虑文件系统编码。默认为UTF-8。[rnix, 2015-02-18]

  • 修改时进行树锁定。[rnix, 2014-09-02]

  • 防止在__setitem__中出现空键。[rnix, 2014-09-02]

  • 使用plumbing装饰器。[rnix, 2014-08-25]

0.3

  • 在目录上引入default_file_factory以控制默认文件子项的创建。[rnix, 2013-12-09]

  • FileStorage中的文件逻辑移动。[rnix, 2013-08-06]

  • file_factories作为目录存储的类属性。[rnix, 2013-08-06]

  • ignores作为目录存储的类属性。[rnix, 2013-08-06]

  • 清理接口。[rnix, 2013-08-06]

0.2

  • 几乎完全重写。现在符合基于node的API的范式。[rnix, 2012-01-30]

0.1

  • 初始版本

许可证

版权所有(c)2010-2021,BlueDynamics Alliance,奥地利 版权所有(c)2021-2024,Node贡献者 保留所有权利。

在满足以下条件的情况下,允许以源代码和二进制形式重新分发和使用,无论是否修改:

  • 源代码的重新分发必须保留上述版权声明、本条件列表和以下免责声明。

  • 二进制形式的重新分发必须在使用文档和/或其他材料中复制上述版权声明、本条件列表和以下免责声明。

本软件由版权所有者和贡献者提供,按“原样”提供,并放弃任何明示或暗示的保证,包括但不限于适销性和适用于特定目的的暗示保证。在任何情况下,版权所有者或贡献者均不对任何直接、间接、偶然、特殊、示范性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论该损害是否由使用本软件引起,即使被告知此类损害的可能性。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

node_ext_directory-0.8.1.tar.gz (14.2 kB 查看散列)

上传时间

构建分发

node.ext.directory-0.8.1-py3-none-any.whl (14.0 kB 查看散列)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面