pyfolder是一个将文件系统文件夹作为字典进行管理的包。
pyfolder的Python项目详细描述
pyfolder是一个包,用于将文件系统文件夹管理为字典。
安装
目前只支持python 3.4.1以后的版本:
sudo pip3 install pyfolder
示例
>>>frompyfolderimportPyFolder>>>>>>pyfolder=PyFolder("/path/to/folder")>>>pyfolder["file.txt"]="hello, this is going to be instantly the content of this file."
基本用法
pyfolder可以轻松地存储或读取文件系统中的内容。用法与普通词典相同:
- 创建具有特定二进制内容的文件:
>>>frompyfolderimportPyFolder>>>>>>pyfolder=PyFolder("/path/to/folder")>>>pyfolder['file.bin']=b"Content as bytes">>>pyfolder['file.txt']="Content as text">>>pyfolder['file.json']={"content":"Content as JSON"}
pyfolder自动检测要存储的内容类型。
也可以用相对文件uri表示法引用文件的创建:
>>>pyfolder["folder1/folder2/file.txt"]="content"
如果指定的文件夹不存在,默认情况下它将自动创建,除非标志
>>>pyfolder=PyFolder("/path/to/folder",auto_create_folder=False)
注意,在uri表示法中不允许使用“.”或“.”字符,它必须是相对于根的uri。
- 获取特定内容:
>>>pyfolder=PyFolder("/path/to/folder")>>>pyfolder['file.bin']b"Content as bytes">>>pyfolder['file.txt']"Content as text">>>pyfolder['file.json']{"content":"Content as JSON"}>>>pyfolder['folder1/folder2/file.bin']b"Other content"
默认情况下,pyfolder将根据文件扩展名,尝试使用它拥有的最佳解释器加载内容。如果找不到 一个内容,它将返回字节格式的内容。在实例化期间,可以使用标志interpret=false禁用此行为:
>>>pyfolder=PyFolder("/path/to/folder",interpret=False)
- 编辑内容:
pyfolder不允许修改或删除元素,除非在实例化期间指定了标志allow\u override:
>>>pyfolder=PyFolder("/path/to/folder",allow_override=True)>>>pyfolder['file.bin']=b"replaced_content_bytes"
- 删除内容:
>>>delpyfolder['file.bin']
请注意,也可以删除文件夹:
>>>delpyfolder['folder1']>>>delpyfolder['.']# deletes PyFolder root folder
默认情况下,PyFolder不会删除文件夹,除非其内容为空。为了能够不受限制地删除文件夹,请启用标记“允许删除包含内容的文件夹”
>>>pyfolder=PyFolder("/path/to/folder",allow_remove_folders_with_content=True)
- 遍历文件:
默认情况下,pyfolder允许对文件进行迭代,包括文件夹:
>>>forfile_nameinpyfolder:>>>print(file_name)
如果还想访问内容,可以使用items()方法来完成:
>>>forfile_name,contentinpyfolder.items():>>>print(file_name,content)
如果只需要文件,则存在
>>>forfile_nameinpyfolder.files()...>>>forfile_name,contentinpyfolder.files_items()
- 遍历文件夹:
>>>forfolder_nameinpyfolder.folders():...
也可以同时迭代文件夹名及其内容:
>>>forfolder_name,folder_contentinpyfolder.folders_items():...
在pyfolder中,每个文件夹都是一个pyfolder对象。完全可以按如下方式嵌套文件夹:
>>>pyfolder["folder1"]["folder2"]>>>pyfolder["folder1/folder2"]# Equivalent in relative URI notation
- 搜索文件:
pyfolder通过匹配名称简化文件/文件夹的搜索。它将返回找到的文件名的相对uri列表:
>>>pyfolder.index("name.bin")>>>['path/to/name.bin','path2/to/name.bin']
许可证
它是根据麻省理工学院的许可证发行的。