This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: zipfile.extractall should accept bytes path as parameter
Type: enhancement Stage: resolved
Components: Library (Lib) Versions: Python 3.5
process
Status: closed Resolution: rejected
Dependencies: Superseder:
Assigned To: serhiy.storchaka Nosy List: Laurent.Mazuel, serhiy.storchaka
Priority: normal Keywords:

Created on 2014-02-27 14:43 by Laurent.Mazuel, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Messages (2)
msg212358 - (view) Author: Laurent Mazuel (Laurent.Mazuel) Date: 2014-02-27 14:43
Many methods which use path in Python now accept string or bytes in parameter (e.g. all methods in "os.path", the "open" method, etc.).

Actually, sometimes it is not possible to handle a file without using bytes path. For example, path coded in another encoding system than the current locale system (e.g. a Windows filename encoded in "cp1252" against a Linux "utf-8" system).

Since "zipfile.extractall" uses path, it should accept bytes as path. Currently it leads to an error:
  File "/usr/local/lib/python3.3/zipfile.py", line 1262, in _extract_member
    targetpath = os.path.join(targetpath, arcname)
  File "/usr/local/lib/python3.3/posixpath.py", line 92, in join
    "components.") from None
TypeError: Can't mix strings and bytes in path components.

This bug is closely related to bug 20329 but is not the same (but maybe this enhancement will create a good debate around bytes support in zipfile module :-) )
msg225604 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2014-08-21 08:28
See also a discussion at Python-Dev:
http://comments.gmane.org/gmane.comp.python.devel/149048

Looks as there are no need to add bytes path in such high-level API. In any case you can call os.fsdecode() on path argument.
History
Date User Action Args
2022-04-11 14:57:59adminsetgithub: 64996
2014-08-21 08:28:36serhiy.storchakasetstatus: open -> closed
resolution: rejected
messages: + msg225604

stage: needs patch -> resolved
2014-08-18 09:50:27serhiy.storchakasetassignee: serhiy.storchaka
stage: needs patch

nosy: + serhiy.storchaka
versions: + Python 3.5, - Python 3.3
2014-02-27 14:43:51Laurent.Mazuelcreate