Open an (uncompressed) tar archive `name'. `mode' is either 'r' to read from an existing archive, 'a' to append data to an existing file or 'w' to create a new file overwriting an existing one. `mode' defaults to 'r'. If `fileobj' is given, it is used
(self, name=None, mode="r", fileobj=None, format=None,
tarinfo=None, dereference=None, ignore_zeros=None, encoding=None,
errors="surrogateescape", pax_headers=None, debug=None,
errorlevel=None, copybufsize=None)
| 1642 | extraction_filter = None # The default filter for extraction. |
| 1643 | |
| 1644 | def __init__(self, name=None, mode="r", fileobj=None, format=None, |
| 1645 | tarinfo=None, dereference=None, ignore_zeros=None, encoding=None, |
| 1646 | errors="surrogateescape", pax_headers=None, debug=None, |
| 1647 | errorlevel=None, copybufsize=None): |
| 1648 | """Open an (uncompressed) tar archive `name'. `mode' is either 'r' to |
| 1649 | read from an existing archive, 'a' to append data to an existing |
| 1650 | file or 'w' to create a new file overwriting an existing one. `mode' |
| 1651 | defaults to 'r'. |
| 1652 | If `fileobj' is given, it is used for reading or writing data. If it |
| 1653 | can be determined, `mode' is overridden by `fileobj's mode. |
| 1654 | `fileobj' is not closed, when TarFile is closed. |
| 1655 | """ |
| 1656 | modes = {"r": "rb", "a": "r+b", "w": "wb", "x": "xb"} |
| 1657 | if mode not in modes: |
| 1658 | raise ValueError("mode must be 'r', 'a', 'w' or 'x'") |
| 1659 | self.mode = mode |
| 1660 | self._mode = modes[mode] |
| 1661 | |
| 1662 | if not fileobj: |
| 1663 | if self.mode == "a" and not os.path.exists(name): |
| 1664 | # Create nonexistent files in append mode. |
| 1665 | self.mode = "w" |
| 1666 | self._mode = "wb" |
| 1667 | fileobj = bltn_open(name, self._mode) |
| 1668 | self._extfileobj = False |
| 1669 | else: |
| 1670 | if (name is None and hasattr(fileobj, "name") and |
| 1671 | isinstance(fileobj.name, (str, bytes))): |
| 1672 | name = fileobj.name |
| 1673 | if hasattr(fileobj, "mode"): |
| 1674 | self._mode = fileobj.mode |
| 1675 | self._extfileobj = True |
| 1676 | self.name = os.path.abspath(name) if name else None |
| 1677 | self.fileobj = fileobj |
| 1678 | |
| 1679 | # Init attributes. |
| 1680 | if format is not None: |
| 1681 | self.format = format |
| 1682 | if tarinfo is not None: |
| 1683 | self.tarinfo = tarinfo |
| 1684 | if dereference is not None: |
| 1685 | self.dereference = dereference |
| 1686 | if ignore_zeros is not None: |
| 1687 | self.ignore_zeros = ignore_zeros |
| 1688 | if encoding is not None: |
| 1689 | self.encoding = encoding |
| 1690 | self.errors = errors |
| 1691 | |
| 1692 | if pax_headers is not None and self.format == PAX_FORMAT: |
| 1693 | self.pax_headers = pax_headers |
| 1694 | else: |
| 1695 | self.pax_headers = {} |
| 1696 | |
| 1697 | if debug is not None: |
| 1698 | self.debug = debug |
| 1699 | if errorlevel is not None: |
| 1700 | self.errorlevel = errorlevel |
| 1701 |
nothing calls this directly
no test coverage detected