How to check if folder exist inside a directory if not create it using python

12,800

Solution 1

After the hint from Hans! I searched on google for those commandes and I found this link : 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

Solution 2

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'

Just send the directory you want to see in as first argument of ftp.nlst()

Solution 3

ftplib is a rather thin wrapper around the FTP protocol. You can look at http://en.wikipedia.org/wiki/List_of_FTP_commands to see what the FTP commands do.

Hint: look at CWD, LIST, MKD.

For LIST you will need ftp.retrlines and parse it to see if it is a directory.

Share:
12,800
mongotop
Author by

mongotop

BY DAY: Data Engineer. BY NIGHT: I like to hit the gym for a bit and cook some nice traditional Moroccan food. FOR FUN: camping during the weekend, watching movies in the theater and reading outdoors.

Updated on June 06, 2022

Comments

  • mongotop
    mongotop almost 2 years

    I use the below python script to check if a file exist on the root of my ftp server.

    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'
    

    How can I modify the above script to look inside a specific folder instead of the root directory?

    For example, I want to see if a folder name called foo exists inside the www directory.

    The goal of my question, is to see if the folder foo exists inside the www directory, if so print cool! if not create a folder called foo inside www.