New submission from Domenico Ragusa <domenicorag...@gmail.com>:

ZipFile seems to support Pathlike objects pretty well, except in 
ZipFile.writestr.
For example:

>>> a = ZipFile(Path('test.zip'), 'w') # this works ok
>>> a.write(Path('./foo.jpeg'), arcname=PurePath('/some/thing.jpeg')) # this 
>>> works as well
>>> a.writestr(PurePath('/test.txt'), 'idk') # this doesn't
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.8/zipfile.py", line 1788, in writestr
    zinfo = ZipInfo(filename=zinfo_or_arcname,
  File "/usr/lib/python3.8/zipfile.py", line 349, in __init__
    null_byte = filename.find(chr(0))
AttributeError: 'PurePosixPath' object has no attribute 'find'

I think it would be more consistent if it accepted any kind of paths, it would 
suffice to call os.fspath in ZipInfo.__init__ when the filename is a 
Pathlike-object, it's just 2 lines (+ tests, of course).

Can I go ahead and prepare a patch for this?

----------
components: Library (Lib)
messages: 368098
nosy: d.ragusa
priority: normal
severity: normal
status: open
title: add support for os.Pathlike filenames in zipfile.ZipFile.writestr
type: enhancement
versions: Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue40506>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to