Python tar 文件模块显示两个具有相同名称的文件,除了一个以 _ 开头

Python tar file module shows two files with same name, except one begins with _

我有一个 tar 文件,里面有 3 个文件,文件 1、文件 2、文件 3。当我使用 Python tarfile 模块查看 tarfile 中的文件时,该模块显示 6 个文件,我有 3 个,并在每个文件前加上下划线.我不知道为什么。

infile = '/Users/myname/Downloads/tt/testing.tar.gz'

outdir = '/Users/myname/Downloads/tt/out'

tar_flag = tarfile.is_tarfile(infile)

if tar_flag:
    tar_obj = tarfile.open(infile, 'r')
    name_list = tar_obj.getnames()
    for name in name_list:
        print name
    tar_obj.close()

这将打印以下内容:

./._file1
./file1
./._file2
./file2
./._file3
./file3

但是,当我使用tar命令检查tar文件的内容时,tar文件中只有3个文件:

$ tar tvf testing.tar.gz
drwxr-xr-x  0 myname staff       0 Nov  7 10:20 ./
-rw-r--r--  0 myname staff  518458 Jun  4 08:37 ./file1
-rw-r--r--  0 myname staff 1050412 Oct 20 14:16 ./file2
-rw-r--r--  0 myname staff  132463 Nov  7 10:08 ./file3

另外,当我提取tar文件时,里面只有3个文件。

我不确定为什么 tarfile 模块在前面加上 _ 并显示文件名两次?

这不是 tar 特有的问题,而是关于您的 OS。根据您的路径,我假设您使用的是 Mac 计算机。

带有._前缀的文件是AppleDouble资源分叉文件,用于存储macOS的扩展文件属性(包括通常使用xattr操作的文件)命令)。当您将文件复制到外部 FAT32/ExFAT 驱动器时,您还会看到此类文件出现。

解压文件后,由于您的 Mac 使用支持这些扩展属性的 HFS+ 或 APFS,因此这些文件直接存储在文件系统中。

This 是关于这些文件的另一个问题。