Python 如何列出ftp目录中的所有文件夹?
我试图在中列出文件夹,以便输出如下所示:Python 如何列出ftp目录中的所有文件夹?,python,ftp,download,ftplib,Python,Ftp,Download,Ftplib,我试图在中列出文件夹,以便输出如下所示: [32114, 32115, 32116, ..., 42123] 以下脚本访问ftp站点。如何使用附加的脚本作为开始访问ftp目录中的文件夹 import arcpy, ftplib, os, socket HOST = 'atlas.ca.gov' DIRN = '/pub/naip/2012/doqqs_combined_color-nir/' workspace = 'F:/download/location' # Get current
[32114, 32115, 32116, ..., 42123]
以下脚本访问ftp站点。如何使用附加的脚本作为开始访问ftp目录中的文件夹
import arcpy, ftplib, os, socket
HOST = 'atlas.ca.gov'
DIRN = '/pub/naip/2012/doqqs_combined_color-nir/'
workspace = 'F:/download/location'
# Get current working directory
print 'The current working directory is %s' % os.getcwd()
# Change the current working directory to a download folder
os.chdir(workspace)
print 'The workspace has been changed to %s' % workspace
try:
f = ftplib.FTP(HOST)
except (socket.error, socket.gaierror), e:
print 'ERROR: cannot reach "%s"' % HOST
print '*** Connected to host "%s"' % HOST
try:
f.login()
except ftplib.error_perm:
print 'Error: cannot login anonymously'
f.quit()
print '*** Logged in as "anonymous"'
try:
f.cwd(DIRN)
except ftplib.error_perm:
print 'ERROR: cannot CD to "%s"' % DIRN
f.quit()
print '*** Changed to "%s" folder' % DIRN
如果您查看这些文档,有两个明显的函数用于此操作:nlst
和dir
任何一个都会为您提供目录中所有成员的列表,包括文件和子目录
使用nlst
,您不会获得名称以外的任何信息。但是,如果您打算chdir
或以其他方式使用它们中的每一个,那没关系;对于那些原来是常规文件的异常,您将获得异常,并且可以跳过它们
使用
dir
,您可以获得一个完整的目录列表,以人类可读的形式。您必须捕获(通过传递回调
函数),然后手动解析,这没有那么有趣,但只有这样您才能提前知道哪些成员是文件,哪些是目录。如果服务器是windows计算机,则
ftp.dir()
如果服务器是*nix类型,则输出将类似于drwx-----3用户组512 Apr 22 2005 Mail
如果要检查项目是否为目录,请在每行使用正则表达式。
如果项目是目录,Windows FTP服务器将包含
,并且*nix FTP服务器将以d
开头
您需要Python正则表达式方面的帮助吗?基于abarnert的答案,下面将生成以下列表:
from ftplib import FTP
ftp = FTP('atlas.ca.gov')
ftp.login()
ftp.cwd('/pub/naip/2012/doqqs_combined_color-nir/')
print ftp.nlst()
是否也要从子文件夹获取文件列表?