Your script runs well with some changes:
#!/usr/bin/python3 import ftplib def list_item(dirk,listofitems): if listofitems == []: ftpinstance.retrlines('NLST',listofitems.append) # dirs or files of the current dir mwd = ftpinstance.pwd() # absolute path for item in listofitems: try: ftpinstance.cwd(mwd+'/'+item+'/') listofitems2 = [] ftpinstance.retrlines('NLST',listofitems2.append) #if not a dir, error occurs print (dirk,'d',item) list_item(dirk+' ',listofitems2) except Exception as e: print (dirk,'f',item) #main ftpinstance = ftplib.FTP('ftp.adobe.com','anonymous','anonymous') ftpinstance.cwd("pub/adobe/acrobat/win/Acrobat2017") print("start") list_item('', []) print("end")