<p><strong>编辑1</strong></p>
<p>嗯,我接受tar尊重空文件的答案。。。但在我的系统中:</p>
<pre><code>$ touch emptytar
$ tar -tf emptytar
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
</code></pre>
<p>也许我有一个非规范的版本?在</p>
^{pr2}$
<p>大家好</p>
<p>我正在测试一些逻辑来处理用户上传TAR文件。当我向<code>tarfile.is_tarfile()</code>提供一个空白文件时,它返回<code>True</code>,这不是我所期望的:</p>
<pre><code>$ touch tartest
$ cat tartest
$ python -c "import tarfile; print tarfile.is_tarfile('tartest')"
True
</code></pre>
<p>如果我在文件中添加一些文本,它将返回<code>False</code>,我期望的是:</p>
<pre><code>$ echo "not a tar" > tartest
$ python -c "import tarfile; print tarfile.is_tarfile('tartest')"
False
</code></pre>
<p>我可以在开头添加一个检查,以检查长度为零的文件,但基于<a href="http://docs.python.org/library/tarfile.html#tarfile.is_tarfile" rel="noreferrer">documentation</a>for <code>tarfile.is_tarfile(name)</code>我认为这是不必要的:</p>
<blockquote>
<p>Return True if name is a tar archive
file, that the tarfile module can
read.</p>
</blockquote>
<p>我甚至检查了源代码<a href="http://svn.python.org/projects/python/trunk/Lib/tarfile.py" rel="noreferrer" title="tarfile.py">tarfile.py</a>,我可以看到它正在检查头段块,但我不完全理解它是如何计算这些块的。在</p>
<p>我是否误读了文件并因此设定了不公平的期望?在</p>
<p>谢谢,<br/>
扎卡里</p>