没有项目描述
fx-kirin的Python项目详细描述
这是由stedolan/pathfinder派生的
==
python的标准库包含许多用于处理
文件的模块。讽刺的是,这些都不是特别的"蟒蛇"。
有操作系统,它可以创建、删除和移动
文件。要复制它们,您需要shuil的copy或copy2(当然,略有不同)。要列出文件,可以使用os或glob
模块。您可以使用os.stat获取文件元数据,但必须使用完全不同的模块来解释其结果。
Pathfinder使用这些标准模块创建一个库,无需不断参考文档即可使用该库。
我使用的是发行版的"一个巨大的文件"方法,因此您可以将pathfinder.py放在方便的地方安装它。很快就会有一个合适的pip包了!
目前都有点Unix的味道。它位于python提供的
跨平台原语之上,因此它应该或多或少地在windows上工作,但这还没有经过测试。
pathfinder是在mit许可下获得许可的。
paths
=
"path"表示一个文件,它可能存在,也可能不存在。
>;>;p=路径('/home/stephen/coding/pathfinder/pathfinder.py')
如果p.存在,您可以对路径对象执行很多操作
>;
…打印p.owner,p.last_modify_time
Stephen 2012-02-12 15:40:20.328579
er'
<;directory"/home/stephen/coding/pathfinder">;
>;>print p/'pathfinder'/'pathfinder.py'
<;file"/home/stephen/coding/pathfinder/pathfinder.py">;
'/'解释相对于第一个参数的第二个参数,因此
>;path('/home/stephen')/'coding/pathfinder'
<;directory"/home/stephen/coding/pathfinder">;
>;>;路径('/home/stephen')/'/etc/passwd'
<;文件"/etc/passwd">;
'%'是它的逆路径,并将第一个路径作为第二个路径的相对路径提供给您。
/>
>;>;路径('/home/stephen/coding/pathfinder')%'/home/stephen'
<;目录"编码/探路者">;
>;>;路径('/home/stephen/coding/pathfinder')%'/etc'
<;目录'../home/stephen/coding/pathfinder'>;
一个只需遍历对象的目录。
>;>;对于f in p:
…打印f.basename
.git
.gitignore
readme.markdown
readme.markdown~
pathfinder.py
pathfinder.py~
pathfinder.pyc
,或使用更高级的"查找"方法(见下文)来查找p.find中的f。/>…排除=["*~","*.pyc",".git"],
…ignore_case=true):
pathfinder.py
操作文件系统
path.last_modify_time返回实际的python datetime对象。对于
symlinks,path.link_target显示它们指向的位置,并且
path.final_link_target遵循到达
symlinks链末端所需的许多步骤。
>;>;如果path('readme.markdown')。比(path('pathfinder.py')更新的路径:
…打印"不管你刚才做了什么,记录下来!"
您可以使用path.mkdir()、path.symlink()、
path.chown()和friends修改文件系统。path.chown可用于更改用户或
grOUP或两者都有,并采用数字标识或名称。
>;>p.chown(user="stephen",group="stephen")
unix权限
----
'.owner''和'.group''将文件的所有者和组指定为
字符串(使用'.owner''uid'')和('.group''uid"")对于数字标识。
>;>;路径('/etc/passwd')。group
'root'
'.perms'将在特定的
路径授予文件的Unix权限。
>;>;路径('/etc/passwd')。perms
<;0644-rw-r-->;
perms。用户将限制show只有用户权限,perms.write
只有写权限,依此类推。因此,我们可以在"/bin"中找到所有
world可执行setuid根程序,其中:
>;[f代表f in path('/bin')
if f.perms.world.execute和f.perms.setuid和f.owner=='root']
[<;file"/bin/ping6">;,
<;file"/bin/fusermount">;,
<;文件"/bin/su">;,
<;文件"/bin/mount">;,
<;文件"/bin/umount">;,
<;文件"/bin/ping">;]
> gt;gt;p=路径("myfile")
>;gt;p.contents="看着我!我是档案!"
>>>打印p.内容
看看我!我是档案!
您也可以按照传统的路径打开文件:
>;>f=path('myfile').open("r")
它实现了
标准的python文件方法(因此您可以将其传递给
需要"类似文件的对象"的对象)。
>>>>打印f[0:5]
"你好"
>;>f[6:11]="再次"
>;>打印f[:]
"再次你好"
原子更新
----
创建一个新文件,写入该文件,然后将其名称更改为目标文件名并替换原始文件名。在
unix-y系统上,这保证是原子的:任何其他程序都将看到
整个旧文件或整个新文件,而不是
半写文件或丢失的文件。
在文件移动的瞬间,y可能会在
中观察到丢失的文件。
写('许多有趣的数据')
…f.write('和更多的')
"f"将指向与"mypath"
在同一目录中的临时文件,并且在"with"语句的末尾,新文件将替换
旧文件。如果WITH语句中的代码抛出异常,或者
python进程神秘地终止,那么旧文件将保持完整。
s.path.walk.
>;>p=path('/home/stephen/coding')
>;>p.find(include=["*.py","docs/**/*.html"],
exclude=".git",
visit\u dirs="before",
忽略大小写=true,
最大深度=3)
*include指定要搜索的内容,作为字符串
模式的列表。模式可以包含通配符:"?"匹配任意
单个字符,"\*"任意字符序列和"\*\*"任意
目录序列。所以,PA"coding/\*/\*.html"匹配
"coding/project1/info.html",而不是"coding/project1/docs/help.html",而"coding/\*/\*.html"匹配两者。模式也可以指定为可调用的
,这将被调用以确定文件是否值得返回。如果只有一个模式,则无需传入
列表。
*exclude与此基本相同,但指定了要避免的路径。排除的路径
甚至不会递归到中。
*访问目录可以是"before"、"after"或false,并指定
目录是在其内容之前还是之后返回,还是不在
all处返回。
*忽略大小写和最大深度应该相当清楚。:)
find返回生成路径对象的迭代器。
python的标准库包含许多用于处理
文件的模块。讽刺的是,这些都不是特别的"蟒蛇"。
有操作系统,它可以创建、删除和移动
文件。要复制它们,您需要shuil的copy或copy2(当然,略有不同)。要列出文件,可以使用os或glob
模块。您可以使用os.stat获取文件元数据,但必须使用完全不同的模块来解释其结果。
Pathfinder使用这些标准模块创建一个库,无需不断参考文档即可使用该库。
我使用的是发行版的"一个巨大的文件"方法,因此您可以将pathfinder.py放在方便的地方安装它。很快就会有一个合适的pip包了!
目前都有点Unix的味道。它位于python提供的
跨平台原语之上,因此它应该或多或少地在windows上工作,但这还没有经过测试。
pathfinder是在mit许可下获得许可的。
paths
=
"path"表示一个文件,它可能存在,也可能不存在。
>;>;p=路径('/home/stephen/coding/pathfinder/pathfinder.py')
如果p.存在,您可以对路径对象执行很多操作
>;
…打印p.owner,p.last_modify_time
Stephen 2012-02-12 15:40:20.328579
er'
<;directory"/home/stephen/coding/pathfinder">;
>;>print p/'pathfinder'/'pathfinder.py'
<;file"/home/stephen/coding/pathfinder/pathfinder.py">;
'/'解释相对于第一个参数的第二个参数,因此
>;path('/home/stephen')/'coding/pathfinder'
<;directory"/home/stephen/coding/pathfinder">;
>;>;路径('/home/stephen')/'/etc/passwd'
<;文件"/etc/passwd">;
'%'是它的逆路径,并将第一个路径作为第二个路径的相对路径提供给您。
/>
>;>;路径('/home/stephen/coding/pathfinder')%'/home/stephen'
<;目录"编码/探路者">;
>;>;路径('/home/stephen/coding/pathfinder')%'/etc'
<;目录'../home/stephen/coding/pathfinder'>;
一个只需遍历对象的目录。
>;>;对于f in p:
…打印f.basename
.git
.gitignore
readme.markdown
readme.markdown~
pathfinder.py
pathfinder.py~
pathfinder.pyc
,或使用更高级的"查找"方法(见下文)来查找p.find中的f。/>…排除=["*~","*.pyc",".git"],
…ignore_case=true):
pathfinder.py
操作文件系统
path.last_modify_time返回实际的python datetime对象。对于
symlinks,path.link_target显示它们指向的位置,并且
path.final_link_target遵循到达
symlinks链末端所需的许多步骤。
>;>;如果path('readme.markdown')。比(path('pathfinder.py')更新的路径:
…打印"不管你刚才做了什么,记录下来!"
您可以使用path.mkdir()、path.symlink()、
path.chown()和friends修改文件系统。path.chown可用于更改用户或
grOUP或两者都有,并采用数字标识或名称。
>;>p.chown(user="stephen",group="stephen")
unix权限
----
'.owner''和'.group''将文件的所有者和组指定为
字符串(使用'.owner''uid'')和('.group''uid"")对于数字标识。
>;>;路径('/etc/passwd')。group
'root'
'.perms'将在特定的
路径授予文件的Unix权限。
>;>;路径('/etc/passwd')。perms
<;0644-rw-r-->;
perms。用户将限制show只有用户权限,perms.write
只有写权限,依此类推。因此,我们可以在"/bin"中找到所有
world可执行setuid根程序,其中:
>;[f代表f in path('/bin')
if f.perms.world.execute和f.perms.setuid和f.owner=='root']
[<;file"/bin/ping6">;,
<;file"/bin/fusermount">;,
<;文件"/bin/su">;,
<;文件"/bin/mount">;,
<;文件"/bin/umount">;,
<;文件"/bin/ping">;]
> gt;gt;p=路径("myfile")
>;gt;p.contents="看着我!我是档案!"
>>>打印p.内容
看看我!我是档案!
您也可以按照传统的路径打开文件:
>;>f=path('myfile').open("r")
它实现了
标准的python文件方法(因此您可以将其传递给
需要"类似文件的对象"的对象)。
>>>>打印f[0:5]
"你好"
>;>f[6:11]="再次"
>;>打印f[:]
"再次你好"
原子更新
----
创建一个新文件,写入该文件,然后将其名称更改为目标文件名并替换原始文件名。在
unix-y系统上,这保证是原子的:任何其他程序都将看到
整个旧文件或整个新文件,而不是
半写文件或丢失的文件。
在文件移动的瞬间,y可能会在
中观察到丢失的文件。
写('许多有趣的数据')
…f.write('和更多的')
"f"将指向与"mypath"
在同一目录中的临时文件,并且在"with"语句的末尾,新文件将替换
旧文件。如果WITH语句中的代码抛出异常,或者
python进程神秘地终止,那么旧文件将保持完整。
s.path.walk.
>;>p=path('/home/stephen/coding')
>;>p.find(include=["*.py","docs/**/*.html"],
exclude=".git",
visit\u dirs="before",
忽略大小写=true,
最大深度=3)
*include指定要搜索的内容,作为字符串
模式的列表。模式可以包含通配符:"?"匹配任意
单个字符,"\*"任意字符序列和"\*\*"任意
目录序列。所以,PA"coding/\*/\*.html"匹配
"coding/project1/info.html",而不是"coding/project1/docs/help.html",而"coding/\*/\*.html"匹配两者。模式也可以指定为可调用的
,这将被调用以确定文件是否值得返回。如果只有一个模式,则无需传入
列表。
*exclude与此基本相同,但指定了要避免的路径。排除的路径
甚至不会递归到中。
*访问目录可以是"before"、"after"或false,并指定
目录是在其内容之前还是之后返回,还是不在
all处返回。
*忽略大小写和最大深度应该相当清楚。:)
find返回生成路径对象的迭代器。