python的文件系统抽象层
fs的Python项目详细描述
PyFileSystem2
python的文件系统抽象层。
文档
简介
把pyfilesystem的FS
对象看作
python的file
对象。就像文件对象抽象
单文件,fs对象抽象整个文件系统。
让我们以一段简单的代码为例。以下
函数使用PyFileSystem API计算非空的数量
目录中的python代码行。它递归地工作,因此它将
在所有子目录中查找.py
文件。
defcount_python_loc(fs):"""Count non-blank lines of Python code."""count=0forpathinfs.walk.files(filter=['*.py']):withfs.open(path)aspython_file:count+=sum(1forlineinpython_fileifline.strip())returncount
我们可以按如下方式调用count_python_loc
:
fromfsimportopen_fsprojects_fs=open_fs('~/projects')print(count_python_loc(projects_fs))
行project_fs = open_fs('~/projects')
打开一个fs对象
映射到主文件夹中的projects
目录。那个物体是
在计算代码行数时由count_python_loc
使用。
要计算zip文件中的python代码行数,可以将 以下更改:
projects_fs=open_fs('zip://projects.zip')
或者计算ftp服务器上的python行数:
projects_fs=open_fs('ftp://ftp.example.org/projects')
不需要更改count_python_loc
,因为pyfilesystem
为任何类似于
文件和目录的集合。本质上,它允许你写
与文件的物理位置和方式无关的代码
存储。
与纯粹使用标准库的版本相比:
defcount_py_loc(path):count=0forroot,dirs,filesinos.walk(path):fornameinfiles:ifname.endswith('.py'):withopen(os.path.join(root,name),'rt')aspython_file:count+=sum(1forlineinpython_fileifline.strip())returncount
这个版本类似于上面的pyfilesystem代码,但只会
使用操作系统文件系统。任何其他文件系统都需要
完全不同的api,您可能需要重新实现
os.walk
的目录遍历功能。
学分
以下开发人员已为此项目贡献了代码和时间:
有关参与者的完整列表,请参见contributors.md。
PyFileSystem2欠下了一大笔人情 为原始版本贡献代码和思想的开发人员。
- 瑞安·凯利
- 安德鲁·舍勒
- 本·汀比
如果我错过了任何人,请向我道歉,如果你的名字是 这里不见了。
支架
如果需要商业支持,请联系Will McGugan。