Как проверить, существует ли папка внутри каталога, если не создать ее с помощью python

Я использую приведенный ниже скрипт Python, чтобы проверить, существует ли файл на root моего ftp-сервера.

from ftplib import FTP 
ftp = FTP('ftp.hostname.com')
ftp.login('login', 'password')

folderName = 'foldername'

if folderName in ftp.nlst() :
    print 'YES'
else : print 'NO'

Как я могу изменить приведенный выше скрипт, чтобы он смотрел в определенную папку, а не в каталог root?

Например, я хочу посмотреть, существует ли папка с именем foo внутри каталога www.

goal моего вопроса заключается в том, чтобы увидеть, существует ли папка foo внутри каталога www, если да, напечатайте cool! если нет, создайте папку с именем foo внутри www.


person mongotop    schedule 14.01.2014    source источник


Ответы (3)


from ftplib import FTP 
ftp = FTP('ftp.hostname.com')
ftp.login('login', 'password')
where      = 'www'
folderName = 'foldername'

if folderName in ftp.nlst(where) :
    print 'YES'
else :
    print 'NO'

Просто отправьте каталог, который вы хотите видеть, в качестве первого аргумента ftp.nlst()

person wtayyeb    schedule 28.04.2014
comment
ftp.nlst() даст вам имена файлов и каталогов в CWD. - person Tomasz Gandor; 28.10.2014
comment
@TomaszGandor @wtayyeb ftp.nlst(where) не работает должным образом, если в имени каталога есть пробел. Любое обходное решение? - person Shanika Ediriweera; 21.04.2020

После подсказки Ганса! Я искал в Google эти команды и нашел эту ссылку: http://docs.python.org/2/library/ftplib.html

from ftplib import FTP 

ftp = FTP('ftp.hostname.com')
ftp.login('login', 'passwrd')
ftp.cwd('www') # change into 'www' directory

if 'foo' in ftp.nlst() : #check if 'foo' exist inside 'www'
    print 'YES'
    ftp.cwd('foo')  # change into "foo" directory
    ftp.retrlines('LIST') #list directory contents

else : 
    print 'NO'
    ftp.mkd('foo') #Create a new directory called foo on the server.
    ftp.cwd('foo') # change into 'foo' directory
    ftp.retrlines('LIST') #list subdirectory contents

ftp.close() #close connection
person mongotop    schedule 15.01.2014

ftplib — это довольно тонкая оболочка протокола FTP. Чтобы узнать, что такое Команды FTP делают.

Подсказка: посмотрите CWD, LIST, MKD.

Для LIST вам понадобится ftp.retrlines и проанализируйте его, чтобы увидеть, является ли он каталогом.

person Hans Then    schedule 14.01.2014