diff options
author | Martin Panter <vadmium+py@gmail.com> | 2016-02-19 23:34:56 +0000 |
---|---|---|
committer | Martin Panter <vadmium+py@gmail.com> | 2016-02-19 23:34:56 +0000 |
commit | f817a48d170e2dfb7c7154f12308e291457a2f8a (patch) | |
tree | 6db586a036ae16c3e4f6608148683027e0d8c442 /Lib/tarfile.py | |
parent | 92849d1721afce2f05ac1838a676f36c12d8e442 (diff) | |
download | cpython-git-f817a48d170e2dfb7c7154f12308e291457a2f8a.tar.gz |
Issues #22468, #21996, #22208: Clarify gettarinfo() and TarInfo usage
* The Windows-specific binary notice was probably a Python 2 thing
* Make it more obvious gettarinfo() is based on stat(), and that non-ordinary
files may need special care
* The file name must be text; suggest dummy arcname as a workaround
* Indicate TarInfo may be used directly, not just via gettarinfo()
Diffstat (limited to 'Lib/tarfile.py')
-rwxr-xr-x | Lib/tarfile.py | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/Lib/tarfile.py b/Lib/tarfile.py index 9d22c8e37f..25845604f3 100755 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -1754,11 +1754,13 @@ class TarFile(object): return [tarinfo.name for tarinfo in self.getmembers()] def gettarinfo(self, name=None, arcname=None, fileobj=None): - """Create a TarInfo object for either the file `name' or the file - object `fileobj' (using os.fstat on its file descriptor). You can - modify some of the TarInfo's attributes before you add it using - addfile(). If given, `arcname' specifies an alternative name for the - file in the archive. + """Create a TarInfo object from the result of os.stat or equivalent + on an existing file. The file is either named by `name', or + specified as a file object `fileobj' with a file descriptor. If + given, `arcname' specifies an alternative name for the file in the + archive, otherwise, the name is taken from the 'name' attribute of + 'fileobj', or the 'name' argument. The name should be a text + string. """ self._check("awx") @@ -1779,7 +1781,7 @@ class TarFile(object): # Now, fill the TarInfo object with # information specific for the file. tarinfo = self.tarinfo() - tarinfo.tarfile = self + tarinfo.tarfile = self # Not needed # Use os.stat or os.lstat, depending on platform # and if symlinks shall be resolved. @@ -1946,10 +1948,9 @@ class TarFile(object): def addfile(self, tarinfo, fileobj=None): """Add the TarInfo object `tarinfo' to the archive. If `fileobj' is - given, tarinfo.size bytes are read from it and added to the archive. - You can create TarInfo objects using gettarinfo(). - On Windows platforms, `fileobj' should always be opened with mode - 'rb' to avoid irritation about the file size. + given, it should be a binary file, and tarinfo.size bytes are read + from it and added to the archive. You can create TarInfo objects + directly, or by using gettarinfo(). """ self._check("awx") |