跳转到主要内容

pathlib_revised是pathlib的增强版本

项目描述

pathlib_revised

扩展原始Python pathlib 模块

  • 针对Windows MAX_PATH限制的工作-绕过,通过添加 \\?\ 路径前缀

  • 添加缺失的功能,例如:makedirsutimescandir等。

还有一个名为DirEntryPath的类,它比os.DirEntry拥有更多缓存信息

  • 仅限python 3.4或更高版本

  • 测试版状态

请尝试,分叉并贡献! ;)

Build Status on travis-ci.org

travis-ci.org/jedie/pathlib_revised

Build Status on appveyor.com

ci.appveyor.com/project/jedie/pathlib_revised

Coverage Status on coveralls.io

coveralls.io/r/jedie/pathlib_revised

Requirements Status on requires.io

requires.io/github/jedie/pathlib_revised/requirements/

Windows MAX_PATH

Windows API中存在限制:路径长度不能超过259个字符(称为:“MAX_PATH”)。解决方案是在每个绝对路径前添加前缀 \\?\,请参阅

Path2() 类具有额外的属性 extended_path

>>> from pathlib_revised import Path2
>>> p=Path2("c:\foo\bar")
>>> p.extended_path
'\\?\c:\foo\bar'

Path2() 的所有现有方法将内部使用 extended_path,因此 MAX_PATH 限制不再是问题。

extended_path 在 Posix 系统中也存在,但它与 path 相同。

>>> p=Path2("/foo/bar")
>>> p.path
'/foo/bar'
>>> p.extended_path
'/foo/bar'

附加方法

<pre> >>> Path2(“/”).listdir() [‘sbin’, ‘boot’, ‘tmp’, ‘sys’, ‘var’, ‘dev’, ‘usr’, ‘root’, ‘home’, …, ‘initrd.img’, ‘vmlinuz’] </pre> * shutil.**`copyfile() <https://docs.pythonlang.cn/3/library/shutil.copyfile>`_**

<pre> >>> Path2(“a_file.txt”).copyfile(Path2(“a_file_copy.txt”)) </pre> * os.path.**`expanduser() <https://docs.pythonlang.cn/3/library/os.path.html#os.path.expanduser>`_**

<pre> >>> p=Path2(“~”, “sub”, “dir”) >>> p PosixPath2(‘~/sub/dir’) >>> p.expanduser() PosixPath2(‘/home/username/sub/dir’) </pre> * os.**`link() <https://docs.pythonlang.cn/3/library/os.html#os.link>`_**

<pre> >>> Path2(“source.txt”).link(Path2(“hardlinked.txt”)) </pre> * os.**`makedirs() <https://docs.pythonlang.cn/3/library/os.html#os.makedirs>`_**

<pre> >>> Path2(“a”, “new”, “path”).makedirs() </pre> * os.**`utime() <https://docs.pythonlang.cn/3/library/os.html#os.utime>`_**

<pre> >>> mtime = 111111111 # UTC: 1973-07-10 00:11:51 >>> atime = 222222222 # UTC: 1977-01-16 01:23:42

>>> p.Path2("dir/or/file")
>>> p.utime(times=(atime, mtime))
>>> stat = p.stat()
>>> stat.st_atime
222222222
>>> stat.st_mtime
111111111
</pre> * os.**`scandir() <https://docs.pythonlang.cn/3/library/os.html#os.scandir()>`_**

<pre> >>> p=Path2(“/foo/bar”) >>> for dir_item in p.scandir(): … print(dir_item) … <PosixDirEntry: ‘filename’> <PosixDirEntry: ‘directory’> <PosixDirEntry: ‘…’> </pre> 这是一个生成器,它会产生 os.**`DirEntry <https://docs.pythonlang.cn/3/library/os.html#os.DirEntry>`_** 实例。 scandir 是 Python 3.5 中的新功能,但在 Path2() 中将回退到外部的 scandir 模块。

您遗漏了一个方法吗?请,分支、实现、添加测试并提交拉取请求! ;)

杂项

Path2() 有一个 .path 属性,这在 Python 3.4.5 和 3.5.2 中通常是新的。因此,您也可以在较老的 Python 版本中使用它。

DirEntryPath

DirEntryPath 存储了更多的缓存信息

实例**.dir_entry**

os.DirEntry() 实例

实例**.path

路径的 str 或 bytes,来自: os.DirEntry()**.path**

实例**.is_symlink

os.DirEntry()**.is_symlink()** 得到的 bool 值

实例**.is_file

os.DirEntry()**.is_file(follow_symlinks=False)** 得到的 bool 值

实例**.is_dir

os.DirEntry()**.is_dir(follow_symlinks=False)** 得到的 bool 值

实例**.stat

os.DirEntry()**.stat(follow_symlinks=False)** 得到的 bool 值

实例**.path_instance

Path2() 实例

实例**.resolved_path

Path2() 实例来自 .resolve() (如果 resolve 出错:None

实例**.resolve_error

如果 .resolve() 失败,则为错误实例。

通过提供一个 os.DirEntry 实例来创建一个实例,例如。

>>> from pathlib_revised import Path2, DirEntryPath
>>> src_path = Path2("foo/")
>>> for dir_entry in src_path.scandir():
...     dir_entry_path = DirEntryPath(dir_entry)
...     print(dir_entry_path.pformat())
 *** <DirEntryPath foo/file1> :
path.......: 'foo/file1'
path instance..: PosixPath2('foo/file1')
resolved path..: PosixPath2('/home/bar/foo/file1')
resolve error..: None
different path.: True
is symlink.....: False
is file........: False
is dir.........: True
stat.size......: 38
 *** <DirEntryPath foo/BrokenSymlink.ext> :
path.......: 'foo/BrokenSymlink.ext'
path instance..: PosixPath2('foo/BrokenSymlink.ext')
resolved path..: None
resolve error..: FileNotFoundError(2, 'No such file or directory')
different path.: True
is symlink.....: True
is file........: False
is dir.........: False
stat.size......: 15
 *** <DirEntryPath foo/README.creole> :
path.......: 'foo/README.creole'
path instance..: PosixPath2('foo/README.creole')
resolved path..: PosixPath2('/home/bar/foo/README.creole')
resolve error..: None
different path.: True
is symlink.....: False
is file........: True
is dir.........: False
stat.size......: 4802

历史记录

  • 08.02.2016 - v0.1.0

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。

源代码分发

pathlib_revised-0.1.0.tar.gz (13.1 kB 查看哈希值)

上传时间 源代码

构建的发行版

pathlib_revised-0.1.0-py3.4.egg (11.5 kB 查看哈希值)

上传时间 源代码

pathlib_revised-0.1.0-py3-none-any.whl (15.1 kB 查看哈希值)

上传时间 Python 3

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面