<div dir="ltr"><div><div><div>How about adding a new argument to with_suffix?<br><br></div><span style="font-family:monospace">Path.with_suffix(suffix: str,<br>                 stripped: Union[int<span style="font-family:monospace">, str</span>, Iterable[str]]=1)</span><br><br></div><span style="font-family:monospace">stripped</span> would either receive an int (in which case it will greedily strip up to that many suffixes), or a (optionally compound) suffix which would be stripped if present verbatim, or an iterable of suffix strings, in which case it would strip all suffixes in the iterable as many times as available. Examples:<br><div><div><br></div><span style="font-family:monospace">Path('flop.pkg.tar.gz').with_suffix('') → Path('flop.pkg.tar')  # current behavior<br></span></div><span style="font-family:monospace">Path('flop.pkg.tar.gz').with_suffix('', 2) → Path('flop.pkg')  # you have to know what you’re doing. 3 would have stripped '.pkg' too<br>Path('flop.pkg.tar.gz').with_suffix('', '.tar.gz') → Path('flop.pkg')<br>Path('flop.pkg.tar.gz').with_suffix('', '.gz.tar') → Path('flop.pkg.tar.gz')  # not stripped, the suffix doesn’t appear verbatim<br>Path('flop.pkg.tar.gz.tar').with_suffix('', ['.gz', '.tar']) → Path('flop.pkg')  # all instances stripped. probably useless.<br></span></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">Franklin? Lee <<a href="mailto:leewangzhong%2Bpython@gmail.com">leewangzhong+python@gmail.com</a>> schrieb am Mi., 25. Jan. 2017 um 21:44 Uhr:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">> A ".tar.gz" is not the same as a ".svg.gz".  The fact that they are both<br class="gmail_msg">
> gzip-compressed is an implementation detail as far as most software I deal<br class="gmail_msg">
> with is concerned.  My unarchiver will extract a ".tar.gz" into a directory<br class="gmail_msg">
> as if it was just a ".tar", while my image viewer will view a ".svg.gz" as a<br class="gmail_msg">
> vector image as if it was just a ".svg".  From a user-interaction<br class="gmail_msg">
> standpoint, the ".gz" part is ignored.<br class="gmail_msg">
<br class="gmail_msg">
Just to be sure we're on the same page:<br class="gmail_msg">
- A .tar file is an uncompressed bundle of files.<br class="gmail_msg">
- A .gz file is a compressed version of a single file.<br class="gmail_msg">
- Technically, there's no such thing as a .tar.gz file. "x.tar.gz"<br class="gmail_msg">
means that if you unwrap it with gunzip, you'll get a file called<br class="gmail_msg">
"x.tar", which you can then unpack with tar.<br class="gmail_msg">
<br class="gmail_msg">
"x.tar.gz" is not a tar file using the gzip compression. It's a gz<br class="gmail_msg">
file which unpacks to a tar file. Conceptually, your unarchiver does<br class="gmail_msg">
it in two separate steps.<br class="gmail_msg">
<br class="gmail_msg">
Similarly, "x.svg.gz" is a gz file which unpacks to an svg file. Your<br class="gmail_msg">
viewer just knows to unzip it before use.<br class="gmail_msg">
<br class="gmail_msg">
I don't wanna appear as a naysayer, so here's an alternative<br class="gmail_msg">
suggestion: A parameter for a collection of "extension suffixes". The<br class="gmail_msg">
function will try to eat extensions from the end until it finds one<br class="gmail_msg">
NOT on the list (or it runs out). The docs can recommend `('gz', 'xz',<br class="gmail_msg">
'bz', 'bz2', ...)`. Maybe a later Python version can use that<br class="gmail_msg">
recommendation as the default.<br class="gmail_msg">
<br class="gmail_msg">
IMO, ".part1" is not a part of the extension. You'd usually have<br class="gmail_msg">
"x.part1.rar" and "x.part2.rar" in the same folder, and it makes more<br class="gmail_msg">
sense that there are two files with base names "x.part1" and "x.part2"<br class="gmail_msg">
than to have two different files with the same base name and an<br class="gmail_msg">
extension which just keeps them ordered.<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
Python-ideas mailing list<br class="gmail_msg">
<a href="mailto:Python-ideas@python.org" class="gmail_msg" target="_blank">Python-ideas@python.org</a><br class="gmail_msg">
<a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" class="gmail_msg" target="_blank">https://mail.python.org/mailman/listinfo/python-ideas</a><br class="gmail_msg">
Code of Conduct: <a href="http://python.org/psf/codeofconduct/" rel="noreferrer" class="gmail_msg" target="_blank">http://python.org/psf/codeofconduct/</a><br class="gmail_msg">
</blockquote></div>