基于ftplib FTP类的python ftp UI 名称pftp pftp.py import sys import val from ftplib import FTP #global f = ftp() def printdir(): try: print val.f.dir() except: print 'fail to get dir' def cd(path): origin_path = val.path try: if path == '': val.path = '/' elif path[0] == "/": val.path = path else: val.path += path # print val.path # print path val.f.cwd(val.path) except: val.path = origin_path print 'error path' def upload(file): try: val.f.storbinary("STOR " + file, open(file, "rb"),1024) print 'success to put' except: print 'fail to put' def download(filename, outfile=None): try: if outfile is None: outfile = sys.stdout binaryfile = open(outfile,'wb') val.f.retrbinary("RETR " + filename, binaryfile.write) print 'success to get' except: print 'fail to get' def get_cmd(string): p = string.find(' ') if not (p == -1): cmd = string[0:p] # cmd str = string[p+1:len(string)] # str else: cmd = string str = '' if cmd == 'open': val.f = FTP(str) print 'success connect to the server' if cmd == 'login': try: name = raw_input("username: ") pwd = raw_input("password: ") val.f.login(name,pwd) print 'success login in' print val.f.getwelcome() val.path = '/' except: print 'fail to log in' if cmd == 'ls': printdir() if cmd == 'cd': cd(str) if cmd == 'put': upload(str) if cmd == 'get': str_downfile = raw_input("local path = ") str_downfile += '/' + str download(str, str_downfile) def main(): print 'pftp v1.0' print 'usage: open login ls cd put get' print '-open ftp_url e.g open public.sjtu.edu.cn' print '-login' print '-ls' print '-cd cd /dir1/dir2 cd dir1' print '-put filename(local_currentdir)' print '-get filename(ftp_currentdir) ' print '- > e.g get file.rar ----> local_path = /home/sakura' print 'enjoy it' print 'code by SakurA(&PopA) contact: popacai@gmail.com QICQ:447521915' while (1): cmd = raw_input("pftp> ") if cmd == 'bye': break; get_cmd(cmd) main() val.py from ftplib import FTP f = FTP() path = ''