修改的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中,什么更适合于网络?UDP还是TCP?   java onJsAlert返回消息是对象而不是字符串   音频用Java调高/调低电脑音量?   java将JTextField添加到JOptionPane中:ShowOptionDialog   java合并对来自的行进行排序。txt文件   在Java库Android Studio 1.0.1中找不到本地路径   java如何从序列中删除最后一个数字?   netty简单Java api,用于形成和发送ntp数据包   java装饰器模式问题   Java复制数组引用   在SpringBootApplication类中使用服务的java抛出NullPointerException   在Struts 2中使用拦截器进行身份验证后的java登录重定向   java@SpringBootApplication ComponentScan在新的Eclipse项目中无法正常工作   如何从Android中的java代码中删除任何xml属性   java为什么我的JUnit错误收集器不报告错误?