Allow LZMAFile to accept modes with a "b" suffix.

This commit is contained in:
Nadeem Vawda 2012-06-04 23:36:24 +02:00
parent 33c34da574
commit 6cbb20cdf6
4 changed files with 30 additions and 9 deletions

View file

@ -54,7 +54,8 @@ def __init__(self, filename=None, mode="r", *,
be an existing file object to read from or write to.
mode can be "r" for reading (default), "w" for (over)writing, or
"a" for appending.
"a" for appending. These can equivalently be given as "rb", "wb",
and "ab" respectively.
format specifies the container format to use for the file.
If mode is "r", this defaults to FORMAT_AUTO. Otherwise, the
@ -93,7 +94,7 @@ def __init__(self, filename=None, mode="r", *,
self._pos = 0
self._size = -1
if mode == "r":
if mode in ("r", "rb"):
if check != -1:
raise ValueError("Cannot specify an integrity check "
"when opening a file for reading")
@ -109,7 +110,7 @@ def __init__(self, filename=None, mode="r", *,
self._init_args = {"format":format, "filters":filters}
self._decompressor = LZMADecompressor(**self._init_args)
self._buffer = None
elif mode in ("w", "a"):
elif mode in ("w", "wb", "a", "ab"):
if format is None:
format = FORMAT_XZ
mode_code = _MODE_WRITE
@ -119,7 +120,8 @@ def __init__(self, filename=None, mode="r", *,
raise ValueError("Invalid mode: {!r}".format(mode))
if isinstance(filename, (str, bytes)):
mode += "b"
if "b" not in mode:
mode += "b"
self._fp = open(filename, mode)
self._closefp = True
self._mode = mode_code