Python 处理并行ftp下载错误

Python 处理并行ftp下载错误,python,error-handling,ftp,ftplib,Python,Error Handling,Ftp,Ftplib,我正在使用Python的多个会话从ftp服务器同时下载多个文件。在某个时刻,一个会话(我怀疑)读取另一个进程正在访问的文件,并抛出以下错误: Traceback (most recent call last): File "F:\utilities\python\downloadFTP_NV.py", line 66, in <module> os.unlink(FILE) WindowsError: [Error 32] The process cannot acce

我正在使用Python的多个会话从ftp服务器同时下载多个文件。在某个时刻,一个会话(我怀疑)读取另一个进程正在访问的文件,并抛出以下错误:

Traceback (most recent call last):   File
"F:\utilities\python\downloadFTP_NV.py", line 66, in <module>
     os.unlink(FILE) WindowsError: [Error 32] The process cannot access the file because it is being used by another process:
u'm_4011851_ne_11_1_20100620.tif'

我曾考虑过添加另一个
,除了带有
time.sleep(5)
语句,以帮助减少重叠过程。或者干脆删除
os.unlink(文件)
处理此类错误的最佳方法是什么?

我想说的是,问题在于如何启动会话并允许它们与文件重叠。尝试在一个主会话中运行它们,并将要下载的文件作为参数传递

或者,您也可以使用更简单的模块


我想在并行下载多个文件的过程中,您不应该有两个进程试图在同一个文件上运行的情况(只要您不并行下载一个文件)。

我想说的是,问题在于如何启动会话并允许它们重叠文件。尝试在一个主会话中运行它们,并将要下载的文件作为参数传递

或者,您也可以使用更简单的模块


我想在并行下载多个文件的过程中,您不应该有两个进程试图在同一个文件上运行的情况(只要您不并行下载一个文件)。

我想说的是,问题在于如何启动会话并允许它们重叠文件。尝试在一个主会话中运行它们,并将要下载的文件作为参数传递

或者,您也可以使用更简单的模块


我想在并行下载多个文件的过程中,您不应该有两个进程试图在同一个文件上运行的情况(只要您不并行下载一个文件)。

我想说的是,问题在于如何启动会话并允许它们重叠文件。尝试在一个主会话中运行它们,并将要下载的文件作为参数传递

或者,您也可以使用更简单的模块


我想在paraller下载多个文件的过程中,你不应该有两个进程试图在同一个文件上运行的情况(只要你不以paraller方式下载一个文件)。

我知道这篇文章已经有3年的历史了,但为了其他可能有相同问题的用户,我将给出一个可能的解决方案 在您的代码中,我没有看到您在操作后关闭文件,因此我认为这就是问题所在。作为最佳实践,最好使用
with
语句,因为它提供了上下文管理器和更好的错误处理

因此,您检索文件的代码部分应该如下所示

with open(FILE, 'wb') as fhandle:
      ftp.retrbinary('RETR ' + FILE, fhandle.write)
这会解决你的问题。而且您不需要
os.unlink(文件)


如果你需要一些关于
with
声明的背景信息,这是一个可以访问的地方

我知道这篇文章已经有3年了,但是为了其他可能有同样问题的用户,我会给出一个可能的解决方案 在您的代码中,我没有看到您在操作后关闭文件,因此我认为这就是问题所在。作为最佳实践,最好使用
with
语句,因为它提供了上下文管理器和更好的错误处理

因此,您检索文件的代码部分应该如下所示

with open(FILE, 'wb') as fhandle:
      ftp.retrbinary('RETR ' + FILE, fhandle.write)
这会解决你的问题。而且您不需要
os.unlink(文件)


如果你需要一些关于
with
声明的背景信息,这是一个可以访问的地方

我知道这篇文章已经有3年了,但是为了其他可能有同样问题的用户,我会给出一个可能的解决方案 在您的代码中,我没有看到您在操作后关闭文件,因此我认为这就是问题所在。作为最佳实践,最好使用
with
语句,因为它提供了上下文管理器和更好的错误处理

因此,您检索文件的代码部分应该如下所示

with open(FILE, 'wb') as fhandle:
      ftp.retrbinary('RETR ' + FILE, fhandle.write)
这会解决你的问题。而且您不需要
os.unlink(文件)


如果你需要一些关于
with
声明的背景信息,这是一个可以访问的地方

我知道这篇文章已经有3年了,但是为了其他可能有同样问题的用户,我会给出一个可能的解决方案 在您的代码中,我没有看到您在操作后关闭文件,因此我认为这就是问题所在。作为最佳实践,最好使用
with
语句,因为它提供了上下文管理器和更好的错误处理

因此,您检索文件的代码部分应该如下所示

with open(FILE, 'wb') as fhandle:
      ftp.retrbinary('RETR ' + FILE, fhandle.write)
这会解决你的问题。而且您不需要
os.unlink(文件)

如果您需要有关
with
语句的一些背景信息,请访问这里