给定Ftp的IP地址、用户名和密码,列出其中所有文件夹和文件。
# python ftpdir.py <ip> <username> <password>
import ftplib
import sys
def lineCallBack(line):
global lines
lines.append(line)
def getFileName(aname):
names=aname.split()
if len(names) < 9:
return ''
else:
fileNames=names[8:]
res=''
for name in fileNames:
res = res + name+' '
return res.strip()
def getDirsFiles(alines):
dirs=[]
files=[]
for line in alines:
if line.startswith('d'):
fileName=getFileName(line)
if fileName=='.' or fileName=='..' :
continue
dirs.append(fileName)
elif line.startswith('-'):
fileName=getFileName(line)
files.append(fileName)
return dirs,files
def printItem(pathLevel,item):
#part2='|-------'
#indent=8
part1=('/t')*pathLevel
print part1+item
def listDir(aftp,path,pathLevel):
global lines
aftp.cwd(path)
lines=[]
aftp.retrlines('LIST',lineCallBack)
dirs,files=getDirsFiles(lines)
for dir in dirs:
printItem(pathLevel,dir)
listDir(aftp,path+dir+'/',pathLevel+1)
for file in files:
printItem(pathLevel,file)
host=sys.argv[1]
user=sys.argv[2]
password=sys.argv[3]
ftp=ftplib.FTP(host,user,password)
lines=[]
listDir(ftp,'/',0)
import ftplib
import sys
def lineCallBack(line):
global lines
lines.append(line)
def getFileName(aname):
names=aname.split()
if len(names) < 9:
return ''
else:
fileNames=names[8:]
res=''
for name in fileNames:
res = res + name+' '
return res.strip()
def getDirsFiles(alines):
dirs=[]
files=[]
for line in alines:
if line.startswith('d'):
fileName=getFileName(line)
if fileName=='.' or fileName=='..' :
continue
dirs.append(fileName)
elif line.startswith('-'):
fileName=getFileName(line)
files.append(fileName)
return dirs,files
def printItem(pathLevel,item):
#part2='|-------'
#indent=8
part1=('/t')*pathLevel
print part1+item
def listDir(aftp,path,pathLevel):
global lines
aftp.cwd(path)
lines=[]
aftp.retrlines('LIST',lineCallBack)
dirs,files=getDirsFiles(lines)
for dir in dirs:
printItem(pathLevel,dir)
listDir(aftp,path+dir+'/',pathLevel+1)
for file in files:
printItem(pathLevel,file)
host=sys.argv[1]
user=sys.argv[2]
password=sys.argv[3]
ftp=ftplib.FTP(host,user,password)
lines=[]
listDir(ftp,'/',0)