首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让Python检查ftp目录是否存在?

如何让Python检查ftp目录是否存在?
EN

Stack Overflow用户
提问于 2009-07-08 13:51:56
回答 8查看 42K关注 0票数 17

我使用此脚本连接到示例ftp服务器并列出可用目录:

代码语言:javascript
复制
from ftplib import FTP
ftp = FTP('ftp.cwi.nl')   # connect to host, default port (some example server, i'll use other one)
ftp.login()               # user anonymous, passwd anonymous@
ftp.retrlines('LIST')     # list directory contents
ftp.quit()

如何使用ftp.retrlines('LIST')输出检查目录(例如public_html)是否存在,如果存在,则执行其他代码并退出;如果不存在,立即执行代码并退出?

EN

回答 8

Stack Overflow用户

发布于 2013-01-15 12:28:31

Nslt将列出ftp服务器中所有文件的数组。只需检查您的文件夹名称是否在那里。

代码语言:javascript
复制
from ftplib import FTP 
ftp = FTP('yourserver')
ftp.login('username', 'password')

folderName = 'yourFolderName'
if folderName in ftp.nlst():
    #do needed task 
票数 21
EN

Stack Overflow用户

发布于 2009-07-08 13:56:39

您可以使用列表。示例

代码语言:javascript
复制
import ftplib
server="localhost"
user="user"
password="test@email.com"
try:
    ftp = ftplib.FTP(server)    
    ftp.login(user,password)
except Exception,e:
    print e
else:    
    filelist = [] #to store all files
    ftp.retrlines('LIST',filelist.append)    # append to list  
    f=0
    for f in filelist:
        if "public_html" in f:
            #do something
            f=1
    if f==0:
        print "No public_html"
        #do your processing here
票数 11
EN

Stack Overflow用户

发布于 2013-11-13 17:50:51

您可以通过控制连接发送"MLST路径“。这将返回一行包含路径类型的行(请注意此处的'type=dir‘):

代码语言:javascript
复制
250-Listing "/home/user":
 modify=20131113091701;perm=el;size=4096;type=dir;unique=813gc0004; /
250 End MLST.

翻译成python应该是这样的:

代码语言:javascript
复制
import ftplib
ftp = ftplib.FTP()
ftp.connect('ftp.somedomain.com', 21)
ftp.login()
resp = ftp.sendcmd('MLST pathname')
if 'type=dir;' in resp:
    # it should be a directory
    pass

当然,上面的代码不是100%可靠的,需要一个“真正的”解析器。您可以在ftplib.py中查看MLSD命令的实现,这非常相似(MLSD与MLST的不同之处在于,响应是通过数据连接发送的,但传输的行的格式是相同的):http://hg.python.org/cpython/file/8af2dc11464f/Lib/ftplib.py#l577

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1098218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档