Suffix in pathlib is not behaving like a file extension
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 35.9k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug report
Bug description:
According to the docs here a suffix is defined as:
The file extension of the final component, if any
But pathlib doesn't behave as expected, illustrating that on Python 3.12.4:
>>> Path("Mr. Smith resume for review").suffix
'. Smith resume for review'
This is particularly problematic for methods like with_suffix. According to the docs here that should:
Return a new path with the suffix changed. If the original path doesn’t have a suffix, the new suffix is appended instead. If the suffix is an empty string, the original suffix is removed
But as established above, that results in:
>>> Path("Mr. Smith resume for review").with_suffix(".pdf")
PosixPath('Mr.pdf')
I've characterized that as a bug as that is not working as described, but could also be a matter of documentation improvement.
I see a few ways:
- Implement
add_suffix, or an argument towith_suffix, but I know that has been discussed before and was ultimately decided against. Also this is a matter of how suffix is defined, not how it's processed. - Sanity check what a suffix can be, e.g. suffix can't have white space. But ultimately difficult without making assumption.
- Adjust the documentation: Clarify that suffix is not equal to file extension but something like last segment separated by a dot or similar. Maybe even with a warning that this can have unexpected behavior as showcased above.
CPython versions tested on:
3.12
Operating systems tested on:
Linux, Windows
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, die Python-3.12-Beispiele für pathlib für PurePath.suffix und with_suffix zu reproduzieren, und untersuche anschließend die Implementierung und Dokumentation von pathlib daraufhin, wie Suffixe definiert sind. Vergleiche das beobachtete Verhalten mit der dokumentierten Formulierung zu Dateierweiterungen und bestimme, ob das Problem durch Verhaltensänderungen oder eine Klarstellung der Dokumentation gelöst wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- operating-systems
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 42/100