Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何列出ftp目录中的所有文件夹?_Python_Ftp_Download_Ftplib - Fatal编程技术网

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()

是否也要从子文件夹获取文件列表?