我一直在尝试从FTP服务器下载文件。为此,我发现了Python-FTP download all files in directory并对其进行了检查。无论如何,我提取了我需要的代码,它显示如下:
import os
from ftplib import FTP
ftp = FTP("ftp.example.com", "exampleUsername", "examplePWD")
file_names = ftp.nlst("\public_html")
print file_names
for filename in file_names:
if os.path.splitext(filename)[1] != "":
local_filename = os.path.join(os.getcwd(), "Download", filename)
local_file = open(filename, 'wb')
ftp.retrbinary('RETR ' + filename, local_file.write)
local_file.close()
ftp.close()
但是当它试图打开文件时,它会一直说:
ftplib.error_perm: 550 Can't open CHANGELOG.php: No such file or directory
我已尝试过w+
,a+
,rw
等等,而且我一直都会遇到同样的错误。有什么想法吗?
注意:我使用的是OSX Mavericks和Python 2.7.5。
这个问题可能已被问过好几次了,相信我研究过并找到了其中一些,但没有一个能为我工作。
答案 0 :(得分:1)
看起来您在目录中列出文件,然后根据返回的字符串获取文件。 nlst()是返回完整路径还是只返回文件名?如果它只是文件名而不是retrbinary可能期望“/ Foo / file”但是获得“file”,并且在服务器的根目录中可能没有任何命名文件。