基于节点的文件系统目录抽象
node.ext.director的Python项目详细描述
用法
创建新文件
fromnode.ext.directoryimportFilefile_path='file.txt'f=File(name=file_path)# set contents via data attributef.data='data\n'# set contents via lines attributef.lines=['data']# set permissionsf.fs_mode=0o644# persistf()
读取现有文件
file_path='file.txt'f=File(name=file_path)assert(f.data=='data\n')assert(f.lines==['data'])assert(f.fs_mode==0o644)
包含二进制数据的文件
fromnode.ext.directoryimportMODE_BINARYfile_path='file.txt'f=File(name=file_path)f.mode=MODE_BINARYf.data=b'\x00\x00'assert(f.data==b'\x00\x00')# lines property won't work if file in binary modef.lines# raises RuntimeError
创建目录
fromnode.ext.directoryimportDirectorydir_path='.'d=Directory(name=dir_path)# add subdirectories and filesd['sub']=Directory()d['file.txt']=File()# set permissions for directoryd['sub'].fs_mode=0o755# persistd()
读取现有目录
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
定义文件工厂
fromnode.extimportdirectoryclassPyFile(File):pass# set global factoriesdirectory.file_factories['.py']=PyFile# set local factoriesd=Directory(name='.',factories={'.py':PyFile})
# when reading .py files, PyFile is used to instanciate children >>> withopen('foo.py','w')asf:... f.write('#')>>> d=Directory(name='.',factories={'.py':PyFile})>>> d.printtree()<class 'node.ext.directory.directory.Directory'>: . <class '...PyFile'>: foo.py