您可以将ftplib用于Python中的完整FTP支持。但是,获取目录列表的首选方法是:
# File: ftplib-example-1.py import ftplib ftp = ftplib.FTP("www.python.org") ftp.login("anonymous", "ftplib-example-1") data = [] ftp.dir(data.append) ftp.quit() for line in data: print "-", line
产生:
$ python ftplib-example-1.py - total 34 - drwxrwxr-x 11 root 4127 512 Sep 14 14:18 . - drwxrwxr-x 11 root 4127 512 Sep 14 14:18 .. - drwxrwxr-x 2 root 4127 512 Sep 13 15:18 RCS - lrwxrwxrwx 1 root bin 11 Jun 29 14:34 README -> welcome.msg - drwxr-xr-x 3 root wheel 512 May 19 1998 bin - drwxr-sr-x 3 root 1400 512 Jun 9 1997 dev - drwxrwxr-- 2 root 4127 512 Feb 8 1998 dup - drwxr-xr-x 3 root wheel 512 May 19 1998 etc ...
我想这个想法是解析结果以获取目录列表。但是,此列表直接取决于FTP服务器格式化列表的方式。为此必须编写代码,而且必须预料FTP服务器格式化该列表的所有不同方式。
有没有一种可移植的方法来使目录列表充满数组?
(阵列应仅具有文件夹名称。)
尝试使用ftp.nlst(dir)。
ftp.nlst(dir)
但是,请注意,如果文件夹为空,则可能会引发错误:
files = [] try: files = ftp.nlst() except ftplib.error_perm, resp: if str(resp) == "550 No files found": print "No files in this directory" else: raise for f in files: print f