如何解决 FTP 错误 2 不是目录
How to solve FTP Error 2 Not a Directory
我正在使用下面的代码从 ftp server.But 下载文件 我收到错误 [Errno 2] No such file or directory:
,但是文件存在于服务器中,我可以下载它通过终端。谁能帮帮我!!
import ftplib
import os
remotpath='folder/subfolder'
try:
ftpclient = ftplib.FTP('ftp.xxxx.com')
ftpclient.login('user', 'pass')
ftpclient.cwd(remotpath)
print "login succeessfull"
files = ftpclient.nlst()
for eachFile in files:
saveTo = os.path.join(remotpath,eachFile)
if (not os.path.exists(saveTo)):
try:
ftpclient.retrbinary('RETR ' + eachFile, open(saveTo, 'wb').write)
#logging.info('\tdownloaded ' + saveTo)
downloaded += 1
except BaseException as e:
print('\terror downloading inside first %s - %s' % (eachFile, e.__str__()))
except ftplib.error_perm:
print('\terror downloading inside second %s - %s' % (eachFile, ftplib.error_perm))
except Exception as e:
print e
目标目录./folder/subfolder
是否存在?
如果没有,您需要在下载文件之前创建它。使用 OS 命令 (mkdir
) 或在 Python 中使用 os.makedirs()
:
import os
try:
os.makedirs(remotpath)
except OSError as exception:
if exception.errno != errno.EEXIST:
raise
您可以在 for
循环之前的某处添加它。
在另一个问题上,异常处理程序的顺序意味着 所有 内部 try
块中引发的异常将在 except BaseException
语句中处理.这意味着 ftplib.error_perm
将被捕获在该语句中,因为 BaseException
更通用,而不是您可能期望的 ftplib.error_perm
语句中。
您应该按照通用性递增的顺序重新排列您的 except
语句。
我正在使用下面的代码从 ftp server.But 下载文件 我收到错误 [Errno 2] No such file or directory:
,但是文件存在于服务器中,我可以下载它通过终端。谁能帮帮我!!
import ftplib
import os
remotpath='folder/subfolder'
try:
ftpclient = ftplib.FTP('ftp.xxxx.com')
ftpclient.login('user', 'pass')
ftpclient.cwd(remotpath)
print "login succeessfull"
files = ftpclient.nlst()
for eachFile in files:
saveTo = os.path.join(remotpath,eachFile)
if (not os.path.exists(saveTo)):
try:
ftpclient.retrbinary('RETR ' + eachFile, open(saveTo, 'wb').write)
#logging.info('\tdownloaded ' + saveTo)
downloaded += 1
except BaseException as e:
print('\terror downloading inside first %s - %s' % (eachFile, e.__str__()))
except ftplib.error_perm:
print('\terror downloading inside second %s - %s' % (eachFile, ftplib.error_perm))
except Exception as e:
print e
目标目录./folder/subfolder
是否存在?
如果没有,您需要在下载文件之前创建它。使用 OS 命令 (mkdir
) 或在 Python 中使用 os.makedirs()
:
import os
try:
os.makedirs(remotpath)
except OSError as exception:
if exception.errno != errno.EEXIST:
raise
您可以在 for
循环之前的某处添加它。
在另一个问题上,异常处理程序的顺序意味着 所有 内部 try
块中引发的异常将在 except BaseException
语句中处理.这意味着 ftplib.error_perm
将被捕获在该语句中,因为 BaseException
更通用,而不是您可能期望的 ftplib.error_perm
语句中。
您应该按照通用性递增的顺序重新排列您的 except
语句。