修改的pathlib是pathlib的增强版本

pathlib_revised的Python项目详细描述


Pathlib_修订版

展开原始pythonpathlib模块:

  • 通过添加\\?\路径前缀,为Windows最大路径限制进行一轮工作
  • 添加缺少的内容,如:makedirsutimescandir等。

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

  • 仅限Python 3.4或更新版本
  • β状态

请,尝试,叉和贡献!;)

Build Status on travis-ci.orgtravis-ci.org/jedie/pathlib_revised
Build Status on appveyor.comci.appveyor.com/project/jedie/pathlib_revised
Coverage Status on coveralls.iocoveralls.io/r/jedie/pathlib_revised
Requirements Status on requires.iorequires.io/github/jedie/pathlib_revised/requirements/

Windows最大路径

Windows API中有一个限制:路径不能超过259个字符(称为:“max_path”)。 工作循环是将前缀\\?\添加到每个绝对路径,请参见:

path2()类具有附加的属性extended嫒u path

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

所有现有方法的{STR 1 } $ PAT2()>将在内部使用^ {STR 1 } $ ExeldPyPosith,以便^ {STR 1 } $ Max Opthix限制不再是问题。

^ {STR 1 } $ ExpDeDyPosith>也存在于POSIX系统下,但与^ {STR 1 } $PATH < /强>相同:

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

其他方法

<;pre>; >>>>路径2(“/”).listdir() ['sbin','boot','tmp','sys','var','dev','usr','root','home',…,'initrd.img','vmlinuz'] <;/pre>;*shuil.*`copyfile()<;https://docs.python.org/3/library/shutil.html#shutil.copyfile>;`**

<;pre>; >>>gt;路径2(“a_file.txt”).copyfile(路径2(“a_file_copy.txt”)) <;/pre>;*os.path.*`expanduser()<;https://docs.python.org/3/library/os.path.html#os.path.expanduser>;`**

<;pre>; >;gt;gt;p=路径2(“~”,“sub”,“dir”) >>>p页 posixpath2('~/sub/dir') >>>gt;p.扩展用户() posixpath2('/home/username/sub/dir') <;/pre>;*os.*`link()<;https://docs.python.org/3/library/os.html#os.link>;``**

<;pre>; >;gt;gt;路径2(“source.txt”).link(路径2(“hardlinked.txt”)) <;/pre>;*os.*`makedirs()<;https://docs.python.org/3/library/os.html#os.makedirs>;`**

<;pre>; >>>gt;路径2(“a”,“new”,“path”).makedirs() <;/pre>;*os.*`utime()<;https://docs.python.org/3/library/os.html#os.utime>;`**

<;pre>; >;gt;gt;时间=11111111;协调世界时:1973-07-10 00:11:51 >;gt;gt;atime=22222222;协调世界时: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.python.org/3/library/os.html#os.scandir()>`_**

<;pre>; >;gt;gt;p=路径2(“/foo/bar”) >>>>对于p.scandir()中的目录项: …打印(目录项) … <;posixDirEntry:'文件名'>; <;posixDirEntry:'目录'>; <;posixDirEntry:“…”>; <;/pre>;它是一个生成os.*`direntry<;https://docs.python.org/3/library/os.html#os.DirEntry>;``实例的生成器。 scandir在python 3.5中是新的,但是在path2()中,它将返回到外部scandir模块。

你错过了一个方法?请,fork,implement,add tests和发送一个pull请求!;)

其他

path2()的.path属性,这在python 3.4.5和3.5.2中通常是新的 因此,您也可以将其用于较旧的python版本。

目录路径

DirEntryPath保存更多缓存信息:

instance**.dir_entry**os.DirEntry() instance
instance**.path**str or bytes of the path, from: os.DirEntry()**.path**
instance**.is_symlinkbool from os.DirEntry()**.is_symlink()**
instance**.is_filebool from os.DirEntry()**.is_file(follow_symlinks=False)**
instance**.is_dirbool from os.DirEntry()**.is_dir(follow_symlinks=False)**
instance**.statbool from os.DirEntry()**.stat(follow_symlinks=False)**
instance**.path_instancePath2() instance
instance**.resolved_pathPath2() instance from .resolve() (If resolve errored: None)
instance**.resolve_errorThe error Instance, if .resolve() failed.

通过提供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

历史记录

  • 2016年2月8日-第0.1.0版

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

推荐PyPI第三方库


热门话题
java Cassandra复制因子大于节点数   java J2EE JTA事务回滚不适用于OSE Glassfish 4.0(Build 89)   java spring安全预认证用户登录   org的java类文件。反应流。从RxJava编译示例时未找到Publisher?   java在使用dataFormat作为POJO通过Camel调用Web服务时无法设置SOAP标头   Javafx类的java静态实例   java如何防止一个部件在关闭时覆盖另一个部件的位置   sql server无法从我的java代码连接到数据库   java在JList(Swing)中显示带有的ArrayList   从Java中的CXF服务获取WSAddressing数据   使用资产文件夹进行java简单json解析(本地)   java LDAPException未绑定的无效凭据   JavaJSFspring部署到weblogic   JAVA中字符数组中的特定元素排列?   如果脚本位于不同的目录中,则ant不会使用exec标记运行Javashell脚本