On Tue, Jul 15, 2008 at 3:21 AM, Terry Carroll <[EMAIL PROTECTED]> wrote:

> C:\test\freedb>playtar.py
> Traceback (most recent call last):
>  File "C:\test\freedb\playtar.py", line 10, in <module>
>    RC = tf.extract(sample)
>  File "C:\Python25\lib\tarfile.py", line 1495, in extract
>    self._extract_member(tarinfo, os.path.join(path, tarinfo.name))
>  File "C:\Python25\lib\tarfile.py", line 1562, in _extract_member
>    if upperdirs and not os.path.exists(upperdirs):
>  File "C:\Python25\lib\ntpath.py", line 255, in exists
>    st = os.stat(path)
> TypeError: stat() argument 1 must be (encoded string without NULL bytes),
> not str

The problem seems to be in the file path. Have you successfully
untarred the file using a different tool? Have you tried downloading
the file again?

What version of Python are you using? I have 2.5.2 and the line
numbers in my tarfile.py are quite different than yours. The changelog
for Python 2.5.2 shows many fixes to tarfile so an upgrade may be in
order.
http://www.python.org/download/releases/2.5.2/NEWS.txt

> During some earlier poking around, I see some interesting things: instead
> of sample.name being "data/c410951c" (13 characters) or "/data/c410951c"
> (14 characters) as I would expect, it's a 169-character string: "
> 11034624707 11032232071 /data/c410951c".  I think those are zeroes, not
> blanks.
>
> Curiously, there is also another attribute named "prefix" that is not
> documented in the tarfile.py documentation.  "prefix" is a 155-character
> string that is equal to the first 155 characters of this oddly-too-long
> name.  In fact, if you cut off this "prefix" from the name, you're left
> with "/data/c410951c", whic his kind of what I was expecting name to be in
> the first place.

My version of the source picks up a prefix string and adds it to the
start of the path unless the file is a "GNU sparse" file.

Kent
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to