Skip to content

ZipFile.writestr doesn't behave like Path.write_* #134383

Open
@thatch

Description

@thatch

Feature or enhancement

Proposal:

Given that ZipPath doesn't provide a write_text or write_bytes, I'm trying to use ZipFile.writestr and noticed that when the data you're trying to write isn't the right type it still stores an empty entry. I didn't expect side effects when it failed this fundamentally to get the data.

import zipfile
with zipfile.ZipFile("foo.zip", "w") as z:
  z.writestr("x", ())
  print(z.namelist()) # -> "x"

Notably, Path.write_text behaves the way I'd expect -- it has to construct a memoryview successfully first before opening the file.

from pathlib import Path
Path("x").write_bytes(()) # -> neither creates nor truncates

@jaraco I assume ZipPath not supporting writes is intentional?

Has this already been discussed elsewhere?

This is a minor feature, which does not need previous discussion elsewhere

Links to previous discussion of this feature:

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibPython modules in the Lib dirtype-featureA feature request or enhancement

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions