[Python-ideas] New PEP proposal -- Pathlib Module Should Contain All File Operations

Wes Turner wes.turner at gmail.com
Tue Mar 20 04:03:56 EDT 2018


I added trio to the comparison table
(Things are mostly just async-wrapped,
though pathlib_not_trio does show a few missing methods?).
https://github.com/westurner/pyfilemods/issues/2

https://github.com/westurner/pyfilemods/blob/master/README.rst#attr-table

================== == ======= ====== ======= ======= ====
attr               os os.path shutil pathlib path.py trio
================== == ======= ====== ======= ======= ====
`__div__`_                                    X
`__rdiv__`_                                   X
`absolute`_                          X                X
`abspath`_            X                       X
`access`_          X                          X
`altsep`_          X  X
`anchor`_                            X
`as_posix`_                          X                X
`as_uri`_                            X                X
`atime`_                                      X
`basename`_           X                       X
`bytes`_                                      X
`capitalize`_                                 X
`casefold`_                                   X
`cd`_                                         X
`center`_                                     X
`chdir`_           X                          X
`chmod`_           X                 X        X       X
`chown`_           X          X               X
`chroot`_          X                          X
`chunks`_                                     X
`commonpath`_         X
`commonprefix`_       X
`copy`_                       X               X
`copy2`_                      X               X
`copyfile`_                   X               X
`copymode`_                   X               X
`copystat`_                   X               X
`copytree`_                   X               X
`count`_                                      X
`ctime`_                                      X
`curdir`_          X  X
`cwd`_                               X                X
`defpath`_         X  X
`devnull`_         X  X
`dirname`_            X                       X
`dirs`_                                       X
`drive`_                             X        X
`encode`_                                     X
`endswith`_                                   X
`exists`_             X              X        X       X
`expand`_                                     X
`expandtabs`_                                 X
`expanduser`_         X              X        X       X
`expandvars`_         X                       X
`ext`_                                        X
`extsep`_          X  X
`files`_                                      X
`find`_                                       X
`fnmatch`_                    X               X
`format`_                                     X
`format_map`_                                 X
`get_owner`_                                  X
`getatime`_           X                       X
`getctime`_           X                       X
`getcwd`_          X                          X
`getmtime`_           X                       X
`getsize`_            X                       X
`glob`_                              X        X       X
`group`_                             X                X
`home`_                              X                X
`in_place`_                                   X
`index`_                                      X
`is_absolute`_                       X                X
`is_block_device`_                   X                X
`is_char_device`_                    X                X
`is_dir`_                            X                X
`is_fifo`_                           X                X
`is_file`_                           X                X
`is_reserved`_                       X                X
`is_socket`_                         X                X
`is_symlink`_                        X                X
`isabs`_              X                       X
`isalnum`_                                    X
`isalpha`_                                    X
`isdecimal`_                                  X
`isdigit`_                                    X
`isdir`_              X                       X
`isfile`_             X                       X
`isidentifier`_                               X
`islink`_             X                       X
`islower`_                                    X
`ismount`_            X                       X
`isnumeric`_                                  X
`isprintable`_                                X
`isspace`_                                    X
`istitle`_                                    X
`isupper`_                                    X
`iterdir`_                           X                X
`join`_               X                       X
`joinpath`_                          X        X       X
`lchmod`_                            X                X
`lexists`_            X
`lines`_                                      X
`link`_            X                          X
`listdir`_         X                          X
`ljust`_                                      X
`lower`_                                      X
`lstat`_           X                 X        X       X
`lstrip`_                                     X
`makedirs`_        X                          X
`makedirs_p`_                                 X
`maketrans`_                                  X
`match`_                             X                X
`merge_tree`_                                 X
`mkdir`_           X                 X        X       X
`mkdir_p`_                                    X
`module`_                                     X
`move`_                       X               X
`mtime`_                                      X
`name`_            X                 X        X
`namebase`_                                   X
`normcase`_           X                       X
`normpath`_           X                       X
`open`_            X                 X        X       X
`os`_                 X       X
`owner`_                             X        X       X
`pardir`_          X  X
`parent`_                            X        X
`parents`_                           X
`partition`_                                  X
`parts`_                             X
`pathconf`_        X                          X
`pathsep`_         X  X
`read_bytes`_                        X                X
`read_hash`_                                  X
`read_hexhash`_                               X
`read_md5`_                                   X
`read_text`_                         X                X
`readlink`_        X                          X
`readlinkabs`_                                X
`realpath`_           X                       X
`relative_to`_                       X                X
`relpath`_            X                       X
`relpathto`_                                  X
`remove`_          X                          X
`remove_p`_                                   X
`removedirs`_      X                          X
`removedirs_p`_                               X
`rename`_          X                 X        X       X
`renames`_         X                          X
`replace`_         X                 X        X       X
`resolve`_                           X                X
`rfind`_                                      X
`rglob`_                             X                X
`rindex`_                                     X
`rjust`_                                      X
`rmdir`_           X                 X        X       X
`rmdir_p`_                                    X
`rmtree`_                     X               X
`rmtree_p`_                                   X
`root`_                              X
`rpartition`_                                 X
`rsplit`_                                     X
`rstrip`_                                     X
`samefile`_           X              X        X       X
`sameopenfile`_       X
`samestat`_           X
`sep`_             X  X
`size`_                                       X
`special`_                                    X
`split`_              X                       X
`splitall`_                                   X
`splitdrive`_         X                       X
`splitext`_           X                       X
`splitlines`_                                 X
`splitpath`_                                  X
`splitunc`_                                   X
`startswith`_                                 X
`stat`_            X  X       X      X        X       X
`statvfs`_         X                          X
`stem`_                              X        X
`strip`_                                      X
`stripext`_                                   X
`suffix`_                            X
`suffixes`_                          X
`swapcase`_                                   X
`symlink`_         X                          X
`symlink_to`_                        X                X
`text`_                                       X
`title`_                                      X
`touch`_                             X        X       X
`translate`_                                  X
`uncshare`_                                   X
`unlink`_          X                 X        X       X
`unlink_p`_                                   X
`upper`_                                      X
`using_module`_                               X
`utime`_           X                          X
`walk`_            X                          X
`walkdirs`_                                   X
`walkfiles`_                                  X
`with_name`_                         X                X
`with_suffix`_                       X        X       X
`write_bytes`_                       X        X       X
`write_lines`_                                X
`write_text`_                        X        X       X
`zfill`_                                      X
================== == ======= ====== ======= ======= ====


On Mon, Mar 19, 2018 at 5:23 AM, Wes Turner <wes.turner at gmail.com> wrote:

> Here's a comparison table of os, os.path, shutil, pathlib, and path.py.
>
> The full version is at
> https://github.com/westurner/pyfilemods (README.rst)
> and at
> https://westurner.github.io/pyfilemods.
>
> I ran a few set intersections and went ahead and
> wrote a report to compare function/method signatures and sources.
>
> attr table
> ==========
>
> ================== == ======= ====== ======= =======
> attr               os os.path shutil pathlib path.py
> ================== == ======= ====== ======= =======
> `__div__`_                                    X
> `__rdiv__`_                                   X
> `absolute`_                          X
> `abspath`_            X                       X
> `access`_          X                          X
> `altsep`_          X  X
> `anchor`_                            X
> `as_posix`_                          X
> `as_uri`_                            X
> `atime`_                                      X
> `basename`_           X                       X
> `bytes`_                                      X
> `capitalize`_                                 X
> `casefold`_                                   X
> `cd`_                                         X
> `center`_                                     X
> `chdir`_           X                          X
> `chmod`_           X                 X        X
> `chown`_           X          X               X
> `chroot`_          X                          X
> `chunks`_                                     X
> `commonpath`_         X
> `commonprefix`_       X
> `copy`_                       X               X
> `copy2`_                      X               X
> `copyfile`_                   X               X
> `copymode`_                   X               X
> `copystat`_                   X               X
> `copytree`_                   X               X
> `count`_                                      X
> `ctime`_                                      X
> `curdir`_          X  X
> `cwd`_                               X
> `defpath`_         X  X
> `devnull`_         X  X
> `dirname`_            X                       X
> `dirs`_                                       X
> `drive`_                             X        X
> `encode`_                                     X
> `endswith`_                                   X
> `exists`_             X              X        X
> `expand`_                                     X
> `expandtabs`_                                 X
> `expanduser`_         X              X        X
> `expandvars`_         X                       X
> `ext`_                                        X
> `extsep`_          X  X
> `files`_                                      X
> `find`_                                       X
> `fnmatch`_                    X               X
> `format`_                                     X
> `format_map`_                                 X
> `get_owner`_                                  X
> `getatime`_           X                       X
> `getctime`_           X                       X
> `getcwd`_          X                          X
> `getmtime`_           X                       X
> `getsize`_            X                       X
> `glob`_                              X        X
> `group`_                             X
> `home`_                              X
> `in_place`_                                   X
> `index`_                                      X
> `is_absolute`_                       X
> `is_block_device`_                   X
> `is_char_device`_                    X
> `is_dir`_                            X
> `is_fifo`_                           X
> `is_file`_                           X
> `is_reserved`_                       X
> `is_socket`_                         X
> `is_symlink`_                        X
> `isabs`_              X                       X
> `isalnum`_                                    X
> `isalpha`_                                    X
> `isdecimal`_                                  X
> `isdigit`_                                    X
> `isdir`_              X                       X
> `isfile`_             X                       X
> `isidentifier`_                               X
> `islink`_             X                       X
> `islower`_                                    X
> `ismount`_            X                       X
> `isnumeric`_                                  X
> `isprintable`_                                X
> `isspace`_                                    X
> `istitle`_                                    X
> `isupper`_                                    X
> `iterdir`_                           X
> `join`_               X                       X
> `joinpath`_                          X        X
> `lchmod`_                            X
> `lexists`_            X
> `lines`_                                      X
> `link`_            X                          X
> `listdir`_         X                          X
> `ljust`_                                      X
> `lower`_                                      X
> `lstat`_           X                 X        X
> `lstrip`_                                     X
> `makedirs`_        X                          X
> `makedirs_p`_                                 X
> `maketrans`_                                  X
> `match`_                             X
> `merge_tree`_                                 X
> `mkdir`_           X                 X        X
> `mkdir_p`_                                    X
> `module`_                                     X
> `move`_                       X               X
> `mtime`_                                      X
> `name`_            X                 X        X
> `namebase`_                                   X
> `normcase`_           X                       X
> `normpath`_           X                       X
> `open`_            X                 X        X
> `os`_                 X       X
> `owner`_                             X        X
> `pardir`_          X  X
> `parent`_                            X        X
> `parents`_                           X
> `partition`_                                  X
> `parts`_                             X
> `pathconf`_        X                          X
> `pathsep`_         X  X
> `read_bytes`_                        X
> `read_hash`_                                  X
> `read_hexhash`_                               X
> `read_md5`_                                   X
> `read_text`_                         X
> `readlink`_        X                          X
> `readlinkabs`_                                X
> `realpath`_           X                       X
> `relative_to`_                       X
> `relpath`_            X                       X
> `relpathto`_                                  X
> `remove`_          X                          X
> `remove_p`_                                   X
> `removedirs`_      X                          X
> `removedirs_p`_                               X
> `rename`_          X                 X        X
> `renames`_         X                          X
> `replace`_         X                 X        X
> `resolve`_                           X
> `rfind`_                                      X
> `rglob`_                             X
> `rindex`_                                     X
> `rjust`_                                      X
> `rmdir`_           X                 X        X
> `rmdir_p`_                                    X
> `rmtree`_                     X               X
> `rmtree_p`_                                   X
> `root`_                              X
> `rpartition`_                                 X
> `rsplit`_                                     X
> `rstrip`_                                     X
> `samefile`_           X              X        X
> `sameopenfile`_       X
> `samestat`_           X
> `sep`_             X  X
> `size`_                                       X
> `special`_                                    X
> `split`_              X                       X
> `splitall`_                                   X
> `splitdrive`_         X                       X
> `splitext`_           X                       X
> `splitlines`_                                 X
> `splitpath`_                                  X
> `splitunc`_                                   X
> `startswith`_                                 X
> `stat`_            X  X       X      X        X
> `statvfs`_         X                          X
> `stem`_                              X        X
> `strip`_                                      X
> `stripext`_                                   X
> `suffix`_                            X
> `suffixes`_                          X
> `swapcase`_                                   X
> `symlink`_         X                          X
> `symlink_to`_                        X
> `text`_                                       X
> `title`_                                      X
> `touch`_                             X        X
> `translate`_                                  X
> `uncshare`_                                   X
> `unlink`_          X                 X        X
> `unlink_p`_                                   X
> `upper`_                                      X
> `using_module`_                               X
> `utime`_           X                          X
> `walk`_            X                          X
> `walkdirs`_                                   X
> `walkfiles`_                                  X
> `with_name`_                         X
> `with_suffix`_                       X        X
> `write_bytes`_                       X        X
> `write_lines`_                                X
> `write_text`_                        X        X
> `zfill`_                                      X
> ================== == ======= ====== ======= =======
>
>
>
> On Wed, Mar 14, 2018 at 2:22 PM, Wes Turner <wes.turner at gmail.com> wrote:
>
>> path.py conveniently defines very many (most?) file operations as methods:
>> https://github.com/jaraco/path.py/blob/master/path.py
>>
>> https://pathpy.readthedocs.io/en/latest/api.html
>>
>> The division operator is mapped to os.path.join:
>>
>> Path('a') / '/root' == Path('/root')
>>
>>
>> On Monday, March 12, 2018, George Fischhof <george at fischhof.hu> wrote:
>>
>>>
>>>
>>> 2018-03-12 22:16 GMT+01:00 Paul Moore <p.f.moore at gmail.com>:
>>>
>>>> On 12 March 2018 at 20:57, George Fischhof <george at fischhof.hu> wrote:
>>>> > Good day all,
>>>> >
>>>> > as it seemed to be a good idea, I wrote a PEP proposal for pathlib to
>>>> > contain file operations.
>>>> >
>>>> > Here is the draft. What do you think about this?
>>>>
>>>> I don't know for certain what I think I feel about the idea - in
>>>> general, it seems plausible. But I think you'll need to get down to
>>>> specifics in the PEP, exactly what functions do you suggest get added
>>>> to pathlib?
>>>>
>>>> Paul
>>>>
>>>
>>>
>>> Basically  file and directory operations: copy, rename, move, delete.
>>> With all variants.
>>> I will collect them, and put intot PEP
>>>
>>> George
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180320/354e54dd/attachment-0001.html>


More information about the Python-ideas mailing list