pyfolder是一个将文件系统文件夹作为字典进行管理的包。

pyfolder的Python项目详细描述


pyfolder是一个包,用于将文件系统文件夹管理为字典。

https://badge.fury.io/py/pyfolder.svghttps://travis-ci.org/ipazc/pyfolder.svg?branch=masterhttps://coveralls.io/repos/github/ipazc/pyfolder/badge.svg?branch=masterCode Health

安装

目前只支持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"

如果指定的文件夹不存在,默认情况下它将自动创建,除非标志 AutoMyCudiaType文件夹在实例化期间设置为 false

>>>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)

如果只需要文件,则存在文件()/cTIT>方法以达到目的:

>>>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']

许可证

它是根据麻省理工学院的许可证发行的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Grid loadmask(true)在gxt中不起作用   java将字符串索引转换为整数   为什么Java泛型适用于基元数组,但不适用于基元数组?   java如何让Azure应用程序服务Tomcat将所有80/443流量转发到运行在同一应用程序服务上的JBoss   具有多个值的java转换映射到树?   java如何设置SQL server连接URL?   java设置了多个相互独立的JFrame   安全性在JAVA中如何使用RSAPrivateKey的密码短语?   java不能使用比Apache Velocity中更大的条件   如何在Java中打印字符串的所有排列   停止Android Studio自动导入java。sql。日期   对象简单计算器程序java   java如何在安卓中使用“&”符号作为字符串?   java Connect,为我的安卓应用程序从REST API发布和获取数据