Python newb在这里,请耐心等待。我把一个脚本放在一起,通过FTP下载目录中的所有文件。到目前为止,我已经成功地连接并读取一个文件,但我似乎无法使批量处理(获得从目录中的所有文件)这是我到目前为止有:Python-FTP下载目录中的所有文件
from ftplib import FTP
import os, sys, os.path
def handleDownload(block):
file.write(block)
print ".",
ddir='C:\\Data\\test\\'
os.chdir(ddir)
ftp = FTP('test1/server/')
print 'Logging in.'
ftp.login('user1\\anon', 'pswrd20')
directory = '\\data\\test\\'
print 'Changing to ' + directory
ftp.cwd(directory)
ftp.retrlines('LIST')
print 'Accessing files'
for subdir, dirs, files in os.walk(directory):
for file in files:
full_fname = os.path.join(root, fname);
print 'Opening local file '
ftp.retrbinary('RETR C:\\Data\\test\\' + fname,
handleDownload,
open(full_fname, 'wb'));
print 'Closing file ' + filename
file.close();
ftp.close()
我敢打赌,你可以告诉它并没有做太多,当我运行它,所以任何改进建议,将不胜感激
PS这不是功课:DD
谢谢!
@Sosti,'在我的文章中提到的'retrlines'函数是一个超链接到文档:) – sarnold 2011-03-08 10:52:25
非常感谢,他们都听起来像可靠的建议!我忘了在Windows XP上使用Python 2.5提到im(如果这很有用)如果我使用MLSD选项'ftp.retrlines('MLSD')',代码是否适用于迭代或需要修改更多? (确定它听起来有点愚蠢,但在这里新手,请记住?:DD) – Sosti 2011-03-08 11:00:21
@Sosti,你仍然需要修改你的代码:你不能使用'os.walk()'函数。我将稍微编辑我的答案,以展示如何为'retrlines'创建回调对象。 – sarnold 2011-03-08 11:27:17