修改的pathlib是pathlib的增强版本
pathlib_revised的Python项目详细描述
Pathlib_修订版
展开原始pythonpathlib模块:
- 通过添加\\?\路径前缀,为Windows最大路径限制进行一轮工作
- 添加缺少的内容,如:makedirs,utime,scandir等。
还有一个名为DirEntryPath的类,它保存的缓存信息比os.DirEntry多
- 仅限Python 3.4或更新版本
- β状态
请,尝试,叉和贡献!;)
travis-ci.org/jedie/pathlib_revised | |
ci.appveyor.com/project/jedie/pathlib_revised | |
coveralls.io/r/jedie/pathlib_revised | |
requires.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 } $ ExpDeDyPosith>也存在于POSIX系统下,但与^ {STR 1 } $PATH < /强>相同:
>>> p=Path2("/foo/bar") >>> p.path '/foo/bar' >>> p.extended_path '/foo/bar'
其他方法
- os.*`listdir()<;https://docs.python.org/3/library/os.html#os.listdir>;`庘**
<;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_symlink | bool from os.DirEntry()**.is_symlink()** |
instance**.is_file | bool from os.DirEntry()**.is_file(follow_symlinks=False)** |
instance**.is_dir | bool from os.DirEntry()**.is_dir(follow_symlinks=False)** |
instance**.stat | bool from os.DirEntry()**.stat(follow_symlinks=False)** |
instance**.path_instance | Path2() instance |
instance**.resolved_path | Path2() instance from .resolve() (If resolve errored: None) |
instance**.resolve_error | The 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版
- code cleanup + more tests
- move files form PyHardLinkBackup