37,720
社区成员
发帖
与我相关
我的任务
分享
# -*- coding: utf-8 -*-
#!/usr/bin/python
# Filename: ftp_cmd.py
from ftplib import FTP
import sys
import os
import cmd
class myftp(cmd.Cmd):
def connect_ftp(self):
try:
print '正在准备连接到ftp服务器......'
print self.host
self.ftp_obj = FTP(self.host)
print '连接到ftp服务器成功......'
print f_obj.getwelcome()
except:
print '无法连接到ftp服务器......'
def login_ftp(self):
try:
print '正在准备登录到ftp服务器......'
self.ftp_obj.login(self.user, self.password)
print '成功登录到ftp服务器......'
except:
print '无法登录到ftp服务器......'
print '退出系统......'
sys.exit(1)
def upload(self, file_path):
directory = os.path.split(file_path)[0]
filename = os.path.split(file_path)[1]
ext = os.path.splitext(filename)[1]
list_dir = directory.split('/')
default_dir = os.getcwd()
try:
if len(list_dir[0]) != 0:
print 'a'
for it_dir in list_dir:
print it_dir
os.chdir(it_dir)
except:
print 'Error:没有此目录'
return
try:
if ext in self.file_type:
self.ftp_obj.storlines('STOR ' + filename,
open(filename))
else:
self.ftp_obj.storbinary('STOR ' + filename,
open(filename, 'rb'),
1024)
#os.chdir(default_dir)
print '文件上传成功......'
except:
print 'Error:文件上传出错,或者是文件路径出错!'
def download(self, file_path):
directory = os.path.split(file_path)[0]
filename = os.path.split(file_path)[1]
ext = os.path.splitext(file_path)[1]
default_directory = self.ftp_obj.pwd()
try:
if directory is not None:
self.ftp_obj.cwd(directory)
except:
print 'Error:ftp服务器中没有此目录路径'
return
if len(filename) == 0:
print 'Error:请输入正确的文件路径'
return
try:
if ext in self.file_type:
outfile = open(filename, 'w')
self.ftp_obj.retrlines('RETR ' + filename, lambda s,
w = outfile.write : w(s + '\n'))
else:
outfile = open(filename, 'wr')
self.ftp_obj.retrbinary('RETR ' + filename, lambda s,
w = outfile.write : w(s))
print '文件下载成功......'
except:
print 'Error:文件下载失败,可能服务器上不存在此文件或者网络错误!'
def __init__(self):
'''init data.
No args.
'''
cmd.Cmd.__init__(self)
self.prompt = 'myftp>>'
self.host = '204.45.67.107'
self.user = '19930'
self.password = '111111'
self.file_type = ('.txt', '.htm', '.html', '.asp',
'.css', '.xml', '.py')
self.intro = '''
欢迎进入本ftp客户端应用程序系统!
系统命令如下:
print/p : 显示系统命令介绍界面
dir/b : 显示当前文件夹文件列表(含有详细列表信息)
nlst/c : 显示当前文件夹文件
upload/d : 上传文件
download/e: 下载文件
pwd/f : 显示当前目录
cwd/g : 跳转进入某目录
mkd/h : 创建一个新的目录
rmd/i : 删除一个目录
size/j : 返回一个文件的文件大小
delete/d : 删除某个文件
quit/q : 退出FTP
'''
self.connect_ftp()
self.login_ftp()
def print_intro(self):
print self.intro
print '请选择你需要的操作>>'
def help_quit(self):
print '功能:关闭ftp连接,并且退出当前应用程序.'
def do_quit(self, line):
print '结束ftp连接,程序退出......'
self.ftp_obj.quit()
self.ftp_obj.close()
sys.exit(0)
def help_dir(self):
print '功能:显示当前目录下,某文件夹文件列表(含有详细列表信息)'
def do_dir(self, line):
try:
print '当前目录下,某文件夹下的文件列表信息为:'
input_path = raw_input('请输入要查看文件信息的目录>>')
self.ftp_obj.dir(input_path)
print '结束......'
except:
print '输入的目录信息出错......'
def help_nlst(self):
print '功能:当前目录下,显示某目录下的文件信息'
def do_nlst(self, line):
try:
print '某文件夹下的文件列表信息:'
input_path = raw_input('请输入要查看文件信息的目录>>')
cur_list = self.ftp_obj.nlst(input_path)
' '.join(cur_list)
print cur_list
print '结束......'
except:
print '输入文件目录路径出错......'
def help_upload(self):
print '功能:上传文件到ftp空间'
def do_upload(self, line):
print '当前进入上传模式:'
file_path = raw_input('请输入一个文件路径或者文件名>>')
self.upload(file_path)
def help_pwd(self):
print '功能:显示当前所在的ftp路径'
def do_pwd(self, line):
print '当前路径为:'
print self.ftp_obj.pwd()
print '结束......'
def help_download(self):
print '功能:从ftp服务器上下载文件'
def do_download(self, line):
print '当前所在为下载模块:'
filename_path = raw_input('请输入一个文件名或者文件路径>>')
self.download(filename_path)
def help_cwd(self):
print '功能:跳转进入某一目录'
def do_cwd(self, line):
try:
path = raw_input('请输入你要查看的目录路径>>')
print self.ftp_obj.cwd(path)
print '结束......'
except:
print 'Error:目录输入有误'
def help_mkd(self):
print '功能:在当前目录下创建一个文件夹'
def do_mkd(self, line):
try:
directory = raw_input('请输入一个文件夹名>>')
self.ftp_obj.mkd(directory)
print '文件夹生成成功!'
except:
print 'Error:已经存在此目录和其他网络原因'
def help_rmd(self):
print '功能:删除当前路径文件夹'
def do_rmd(self, line):
try:
directory = raw_input('请输入你想要删除的文件夹名称>>')
self.ftp_obj.rmd(directory)
print '文件夹删除成功......'
except:
print 'Error:不存在此文件夹,或其他网络原因......'
def help_size(self):
print '功能:显示某个文件的大小'
def do_size(self, line):
try:
filename = raw_input('请输入文件名>>')
print '%s B' % self.ftp_obj.size(filename)
print '结束......'
except:
print 'Error:不存在此文件或者输入出错.'
def help_delete(self):
print '功能:删除当前目录下某文件'
def do_delete(self, line):
try:
filename = raw_input('请输入文件名>>')
self.ftp_obj.delete(filename)
print '删除文件成功!'
except:
print 'Error:删除文件失败'
def help_print(self):
print '功能:打印出命令介绍信息'
def do_print(self, line):
print self.intro
# short command
do_p = do_print
do_b = do_dir
do_c = do_nlst
do_d = do_upload
do_e = do_download
do_f = do_pwd
do_g = do_cwd
do_h = do_mkd
do_i = do_rmd
do_j = do_size
do_k = do_delete
do_q = do_quit
def main():
m_ftp = myftp()
m_ftp.cmdloop()
if __name__ == '__main__':
main()