[Python-ideas] pathlib suggestions

Petr Viktorin encukou at gmail.com
Wed Jan 25 11:16:25 EST 2017


On 01/25/2017 04:33 PM, Todd wrote:
> On Wed, Jan 25, 2017 at 10:18 AM, Petr Viktorin <encukou at gmail.com
> <mailto:encukou at gmail.com>> wrote:
>
>     On 01/25/2017 04:04 PM, Todd wrote:
>
>         On Wed, Jan 25, 2017 at 12:25 AM, Stephen J. Turnbull
>         <turnbull.stephen.fw at u.tsukuba.ac.jp
>         <mailto:turnbull.stephen.fw at u.tsukuba.ac.jp>
>         <mailto:turnbull.stephen.fw at u.tsukuba.ac.jp
>         <mailto:turnbull.stephen.fw at u.tsukuba.ac.jp>>> wrote:
>
>             I'm just going to let fly with the +1s and -1s, don't take
>         them too
>             seriously, they're basically impressionistic (I'm not a huge
>         user of
>             pathlib yet).
>
>             Todd writes:
>
>              > So although the names are tentative, perhaps there could be a
>             "fullsuffix"
>              > property to return the extensions as a single string,
>
>             -0      '.'.join(p.suffixes) vs. p.fullsuffix?  TOOWTDI says
>         no.  I
>                     also don't really see the use case.
>
>
>         The whole point of pathlib is to provide convenience functions for
>         common path-related operations.  It is full of methods and
>         properties
>         that could be implemented other ways.
>
>         Dealing with multi-part extensions, at least for me, is extremely
>         common.  A ".tar.gz" file is not the same as a ".tar.bz2" or a
>         ".svg.gz".  When I want to find a ".tar.gz" file, having to deal
>         with
>         the ".tar" and ".gz" parts separately is nothing but a
>         nuisance.  If I
>         want to find and extract ".rar" files, I don't want ".part1.rar"
>         files,
>         ".part2.rar" files, and so on.  So for me dealing with the
>         extension as
>         a single unit, rather than individual parts, is the most common
>         approach.
>
>
>     But what if the .tar.gz file is called "spam-4.2.5-final.tar.gz"?
>     Existing tools like glob and endswith() can deal with the ".tar.gz"
>     extension reliably, but "fullsuffix" would, arguably, not give the
>     answers you want.
>
>
>
> I wouldn't use it in that situation.  The existing "suffix" and "stem"
> properties also only work reliably under certain situations.

Which situations do you mean? It works quite fine with multiple suffixes:
The suffix of "pip-9.0.1.tar.gz" is ".gz", and sure enough, you can 
reasonably expect it's a gz-compressed file. If you uncompress it and 
strip the extension, you'll end up with a "pip-9.0.1.tar", where the 
suffix is ".tar" -- and humans would be surprised if it wasn't a tar 
archive.

The function can't determine what a particular human would think of as 
the full (or "real") suffix in a particular situation -- but I wouldn't 
call it unreliable.

>     Perhaps more specialized tools would be useful, though, for example:
>         repacked_path = original_path.replace_suffix(".tar.gz", ".zip")
>
>
> That is helpful if I want to rename, not if I want to (for example)
> uncompress a file.

Something like this?
     uncompressed = original_path.replace_suffix(".tar.gz", "")





More information about the Python-ideas mailing list