擅长:python、mysql、java
<p>这里的问题很可能是,当执行行-</p>
<pre><code>ftp.retrbinary('RETR %s' % filename, fhandle.write)
</code></pre>
<p>这是使用<code>fhandle.write()</code>函数将数据从ftp服务器写入文件(名称为-<code>target_file_name</code>),但在调用-<code>shutil.copyfile</code>时,<code>fhandle</code>的缓冲区尚未完全刷新,因此在复制文件时丢失了一些数据。在</p>
<p>为了确保不会发生这种情况,您可以将<code>copyfile</code>逻辑移出<code>with</code>块中的<code>fhandle</code>。在</p>
<p>或者,在复制文件之前,可以调用<code>fhandle.flush()</code>刷新缓冲区。在</p>
<p>我相信最好关闭文件(将逻辑移出<code>with</code>块)。示例-</p>
^{pr2}$