修改的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将参数约束到公共超类   java Spring引导:在构造函数中加载属性文件并用作autowire注释   java中的优先级队列顺序错误。util。优先级队列和特定比较器   带有Java Sprint引导REST的Google应用程序引擎标准在GCLOUD服务器中不起作用   安卓从Java代码中检索变量并将其作为参数分配给TestNG   用于读取列表值的Java JSON对象   java Hibernate映射:实体映射中的重复列   多线程。start()不从Java中的父线程分派   java Android facebook webdialog网络错误(netstack:lib_mgr错误)   http使用Java阻止网站   java DynamicAsper:访问连接报表中动态列的值   java如何分离文件中的每个单词,并在表中显示每个单词和每个单词的编号?   如何打包和部署EclipseJava应用程序?   java使用Mule Anypoint,我想实现没有flowref的功能   java Kafka consumer ClassNotFoundException   java错误捕获帮助;消息不断重复   javaspring,Thymeleaf和CSS如何给错误着色   javascript如何在java中实现反向ajax   如何通过UDP连接从java数据包中读取序列号?