homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author martin.panter
Recipients martin.panter
Date 2014年07月17日.07:52:07
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1405583528.37.0.553699872308.issue21996@psf.upfronthosting.co.za>
In-reply-to
Content
It looks like if you pass a "fileobj" argument to "gettarinfo", it assumes it can use the "name" as a text string.
>>> import tarfile
>>> with tarfile.open("/dev/null", "w") as tar, open("/bin/sh", "rb") as file: tar.gettarinfo(fileobj=file)
... 
<TarInfo 'bin/sh' at 0x7f13cc937f20>
>>> with tarfile.open("/dev/null", "w") as tar, open(b"/bin/sh", "rb") as file: tar.gettarinfo(fileobj=file)
... 
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/media/disk/home/proj/python/cpython/Lib/tarfile.py", line 1767, in gettarinfo
 arcname = arcname.replace(os.sep, "/")
TypeError: expected bytes, bytearray or buffer compatible object
>>> with tarfile.open("/dev/null", "w") as tar, open(0, "rb", closefd=False) as file: tar.gettarinfo(fileobj=file)
... 
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/media/disk/home/proj/python/cpython/Lib/tarfile.py", line 1766, in gettarinfo
 drv, arcname = os.path.splitdrive(arcname)
 File "Lib/posixpath.py", line 133, in splitdrive
 return p[:0], p
TypeError: 'int' object is not subscriptable
In my case, my code always sets the final TarInfo.name attribute later on, so the initial name does not matter. Perhaps at least the documentation should say that "fileobj.name" must be a real unencoded file name string unless "arcname" is also given. My workaround was to add a dummy arcname argument, a bit like this:
# Explicit dummy name to avoid using file name of bytes
tarinfo = self.tar.gettarinfo(fileobj=file, arcname="")
# . . .
tarinfo.name = "{}/{}".format(self.pkgname, name)
History
Date User Action Args
2014年07月17日 07:52:08martin.pantersetrecipients: + martin.panter
2014年07月17日 07:52:08martin.pantersetmessageid: <1405583528.37.0.553699872308.issue21996@psf.upfronthosting.co.za>
2014年07月17日 07:52:08martin.panterlinkissue21996 messages
2014年07月17日 07:52:07martin.pantercreate

AltStyle によって変換されたページ (->オリジナル) /