Search code examples
pythonwindowstarfile

Does os.path.sep affect the tarfile module?


Is the path separator employed inside a Python tarfile.TarFile object a '/' regardless of platform, or is it a backslash on Windows?

I basically never touch Windows, but I would kind of like the code I'm writing to be compatible with it, if it can be. Unfortunately I have no Windows host on which to test.


Solution

  • A quick test tells me that a (forward) slash is always used.

    In fact, the tar format stores the full path of each file as a single string, using slashes (try looking at a hex dump), and python just reads that full path without any modification. Likewise, at extraction time python hard-replaces slashes with the local separator (see TarFile._extract_member).

    ... which makes me think that there are surely some nonconformant implementations of tar for Windows that create tarfiles with backslashs as separators!?