关于python语言的ftp客户端 请教高手

aimoran 2007-12-05 06:26:17
做一个ftp的客户端,在ubuntu底下用python语言.已经安装自带的服务器端gproftp。
前提条件是不能用ftp模块,如ftplib,
老师给了许多ftp的命令,如user,pass,pwd,cwd,quit,port,pasv等。
我要做的 ftp客户端比较简单,只需要能下载,上传文件,以及可以改变文件的目录,和消息会话可同步进行即可
看过一些书,几乎所有的书都讲的是用ftplib模块来做客户端。突然不知如何入手。
希望高手给出思路,如果关键的地方能给几个语句更感激不尽。

如果是下载文件
首先我应该做一个连接和ftp服务器的21端口。(已经作了,连接成功)
第二步应该是确认用户和密码,以及匿名登陆的问题,从这里我就不知道该怎么做了。
我本来想用python的commands来执行,但没成功。
第三步是选择一个文件的路径。(希望高手给出提示)
第四步是侦听20端口,以便传送数据,(希望给出提示)
等等

真心的希望高手能作出解答。
...全文
897 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
以后需再关注,现在先帮你顶一下
UltraBejing 2008-04-30
  • 打赏
  • 举报
回复
以后需再关注,现在先帮你顶一下
iambic 2008-04-02
  • 打赏
  • 举报
回复
为什么可以发200分?
Andy_Jing 2008-04-02
  • 打赏
  • 举报
回复
python中自带的ftplib支持加密方式传输文件么?各位清楚有没有支持SSL加密传输的ftplib的包?
Jahson 2008-03-18
  • 打赏
  • 举报
回复
看python 的源代码,自己 sock连接,传送命令,解析返回值;不可能像它那么完备;实现简单功能还是可以的
UBUNTU_710 2008-03-11
  • 打赏
  • 举报
回复
前些天 刚完全用 socket 写了个 FTP Client
antcrazy 2007-12-28
  • 打赏
  • 举报
回复
# -*- coding:utf-8 -*-
# file: pyftp.py
#
import string
from ftplib import FTP # 从ftplib模块中导入FTP
bufsize = 1024 # 设置缓冲区大小
def Get(filename): # 下载文件
command = 'RETR ' + filename
ftp.retrbinary(command, open(filename,'wb').write, bufsize)
print '下载成功'
def Put(filename): # 上传文件
command = 'STOR ' + filename
filehandler = open(filename,'rb')
ftp.storbinary(command,filehandler,bufsize)
filehandler.close()
print '上传成功'
def PWD(): # 获取当前目录
print ftp.pwd()
def Size(filename): # 获取文件大小
print ftp.size(filename)
def Help(): # 输出帮助
print '''
==================================
Simple Python FTP
==================================
cd 进入文件夹
delete 删除文件
dir 获取当前文件列表
get 下载文件
help 帮助
mkdir 创建文件夹
put 上传文件
pwd 获取当前目录
rename 重命名文件
rmdir 删除文件夹
size 获取文件大小
'''
server = raw_input('请输入FTP服务器地址:') # 获取服务器地址
ftp = FTP(server) # 连接到服务器地址
username = raw_input('请输入用户名:') # 获取用户名
password = raw_input('请输入密码:') # 获取字典
ftp.login(username,password) # 登录FTP
print ftp.getwelcome() # 获取欢迎信息
actions = {'dir':ftp.dir, 'pwd': PWD, 'cd':ftp.cwd, 'get':Get, # 命令与对应的函数字典
'put':Put, 'help':Help, 'rmdir': ftp.rmd,
'mkdir': ftp.mkd, 'delete':ftp.delete,
'size':Size, 'rename':ftp.rename}
while True: # 命令循环
print 'pyftp>', # 输出提示符
cmds = raw_input() # 获取输入
cmd = string.split(cmds) # 将输入按空格分割
try: # 异常处理
if len(cmd) == 1: # 判断命令是否有参数
if string.lower(cmd[0]) == 'quit': # 如果命令为quit则退出循环
break
else:
actions[string.lower(cmd[0])]() # 调用与命令对应的函数
elif len(cmd) == 2: # 处理命令有一个参数的情况
actions[string.lower(cmd[0])](cmd[1]) # 调用与命令对应的函数
elif len(cmd) == 3: # 处理命令有两个参数的情况
actions[string.lower(cmd[0])](cmd[1],cmd[2]) # 调用与命令对应的函数
else:
print '输入错误'
except:
print '命令出错'
ftp.quit() # 端口连接
hahe7788 2007-12-26
  • 打赏
  • 举报
回复
49167832,可以去这群,希望和大家一起交流,顺便接分.
hahe7788 2007-12-20
  • 打赏
  • 举报
回复
49167832,可以去这群,希望和大家一起交流,顺便接分.
ChumpKlutz 2007-12-14
  • 打赏
  • 举报
回复
<<深入學習:Python開發>>網上有電子版,我認為很不錯的
iambic 2007-12-14
  • 打赏
  • 举报
回复
Dive into Python
DainelLee 2007-12-14
  • 打赏
  • 举报
回复
借贵贴问个新问题:
就是上面代码在网络条件不好,丢包严重的话 老是在connect的时候被阻塞
而且是一直阻塞,网络不丢包了 还会阻塞在那里
请问有没同志遇到过这个问题,是怎么解决的 给提供点经验
也请高手指点指点 出出解决办法
DainelLee 2007-12-14
  • 打赏
  • 举报
回复
def scan_and_ftp_and_back( files_dir, file_type, host_ip, port, login_user, login_pass, remote_dir, backup_dir ):
global __DEBUG__

files = os.listdir(files_dir)

ftp = FTP()
try:
ftp.connect( host_ip, port )
ftp.login(login_user, login_pass)

#print " Success to connect the reomte ftp host:" + host_ip
except:
print "can't connect the remote ftp host:" + host_ip
print "\t\t port:" + str(port)
print "\t\t user name:" + login_user
print "\t\t password:" + login_pass
return 0
try:
if remote_dir != "" :
ftp.cwd(remote_dir)
except:
print "The remote dir(" + remote_dir + ") doesn't exist!"
return -4

#--------------------> ftp the file to remote host
for file_name in files:
print file_name
if not fnmatch.fnmatch(file_name, file_type):
continue

file_path = files_dir + file_name

try:
fp = open( file_path, "r")
except:
print "can't open the updata file:" + file_path
fp.close()
continue

try:
buf_size = 1024
ftpcmd = "STOR " + file_name + ".temp"
ftp.storbinary(ftpcmd, fp, buf_size)
except:
print "ftp put file faild:" + file_path
fp.close()
continue

fp.close()

try:
ftp.rename(file_name + ".temp", file_name)
except:
print "ftp rename file faild:" + file_name + ".temp"
continue

#--------------------> backup the ftp file
print "backup or delete file-->" + file_path
if backup_dir != "":
cmd = "mv -f " + file_path + " " + DATA_BACKUP_DIR
else:
cmd = "rm -rf " + file_path
commands.getstatusoutput( cmd )

ftp.close()
#end function
phpknows 2007-12-14
  • 打赏
  • 举报
回复
收藏。。谢谢!
有没有学习PYTHON的书?推荐 下?
maplele20 2007-12-07
  • 打赏
  • 举报
回复
看看ftplib.py源代码,可以仿照着写
awperpvip 2007-12-07
  • 打赏
  • 举报
回复
xuexi le
ChumpKlutz 2007-12-07
  • 打赏
  • 举报
回复
> > >   import   ftplib 
> > > ftp=ftplib.FTP('10.136.1.129')
> > > ftp.login('test','test')
'230 User arborims logged in.'
> > > ftp.retrlines('LIST')
total 406498
drwxr-xr-x 15 arborims arborims 1024 Dec 7 11:47 .
drwxr-xr-x 12 root root 512 Oct 30 17:15 ..
-rw-r--r-- 1 arborims arborims 530 Jun 9 2005 .arborims
-rw-r--r-- 1 arborims arborims 9 Apr 18 2005 .arborpw
-rw-r--r-- 1 arborims arborims 1157 Sep 6 20:31 .cshrc
-rw-r--r-- 1 arborims arborims 1185 Nov 15 15:38 .cshrc.DGS
-rw-r--r-- 1 arborims arborims 1201 Dec 1 2006 .cshrc.DR
-rw-r--r-- 1 arborims arborims 1187 Oct 1 16:05 .cshrc.KSC2
-rw-r--r-- 1 arborims arborims 1195 Mar 30 2007 .cshrc.POC
-rw-r--r-- 1 arborims arborims 1193 Sep 27 2006 .cshrc.PS
-rw-r--r-- 1 arborims arborims 1197 Jul 14 2006 .cshrc.R21
-rw-r--r-- 1 arborims arborims 1157 Nov 8 09:34 .cshrc.TEST
-rwxr-xr-x 1 arborims arborims 192 Feb 13 2006 .initprd.sh
-rw-r--r-- 1 arborims arborims 144 Apr 18 2005 .profile
-rw------- 1 arborims arborims 1034 Sep 10 14:37 .sh_history
-rw-r--r-- 1 arborims arborims 8 Apr 18 2005 .THIS_SYSTEM
-rw-r--r-- 1 arborims arborims 2048 May 10 2007 123.dump
drwxr-xr-x 2 arborims arborims 512 Sep 10 13:25 batch
drwxr-xr-x 4 arborims arborims 512 Sep 10 16:08 beerman
drwxr-xr-x 3 arborims arborims 512 Jun 23 2005 bifNcic
lrwxrwxrwx 1 arborims arborims 15 Apr 18 2005 bin -> /mnt/arbor6/bin
drwxr-xr-x 29 arborims arborims 512 Apr 18 2005 data
-rw------- 1 arborims arborims 325 May 15 2007 dead.letter
drwxr-xr-x 2 arborims arborims 512 Nov 15 18:01 dist_file
-rw-r--r-- 1 arborims arborims 140391 May 25 2007 find.dt
drwxr-xr-x 10 arborims arborims 512 Sep 10 16:10 IMS
-rw-r--r-- 1 arborims arborims 207795200 Dec 31 2006 ims.dmp
drwxr-xr-x 7 arborims arborims 512 Aug 25 2005 iris
drwxr-xr-x 5 arborims arborims 512 Jun 13 16:40 julian
-rw-r--r-- 1 arborims arborims 124 Apr 18 2005 local.cshrc
-rw-r--r-- 1 arborims arborims 577 Apr 18 2005 local.login
-rw-r--r-- 1 arborims arborims 562 Apr 18 2005 local.profile
drwxr-xr-x 2 arborims arborims 12288 Nov 15 19:30 log
-rw-r--r-- 1 arborims arborims 308 Oct 11 14:38 mbox
drwxr-xr-x 2 arborims arborims 1024 Nov 8 09:42 scripts
drwxr-xr-x 17 arborims arborims 512 Jun 12 2003 site_specific
drwxr-xr-x 3 arborims arborims 1024 Nov 29 17:33 teng
drwxr-xr-x 2 arborims arborims 512 Dec 7 11:47 test
'226 ASCII Transfer complete.'


ChumpKlutz 2007-12-07
  • 打赏
  • 举报
回复
>>> import ftplib
>>> ftp=ftplib.FTP('10.136.1.129')
>>> ftp.login('test','test
')
'230 User arborims logged in.'
>>> ftp.retrlines('LIST')
total 406498
drwxr-xr-x 15 arborims arborims 1024 Dec 7 11:47 .
drwxr-xr-x 12 root root 512 Oct 30 17:15 ..
-rw-r--r-- 1 arborims arborims 530 Jun 9 2005 .arborims
-rw-r--r-- 1 arborims arborims 9 Apr 18 2005 .arborpw
-rw-r--r-- 1 arborims arborims 1157 Sep 6 20:31 .cshrc
-rw-r--r-- 1 arborims arborims 1185 Nov 15 15:38 .cshrc.DGS
-rw-r--r-- 1 arborims arborims 1201 Dec 1 2006 .cshrc.DR
-rw-r--r-- 1 arborims arborims 1187 Oct 1 16:05 .cshrc.KSC2
-rw-r--r-- 1 arborims arborims 1195 Mar 30 2007 .cshrc.POC
-rw-r--r-- 1 arborims arborims 1193 Sep 27 2006 .cshrc.PS
-rw-r--r-- 1 arborims arborims 1197 Jul 14 2006 .cshrc.R21
-rw-r--r-- 1 arborims arborims 1157 Nov 8 09:34 .cshrc.TEST
-rwxr-xr-x 1 arborims arborims 192 Feb 13 2006 .initprd.sh
-rw-r--r-- 1 arborims arborims 144 Apr 18 2005 .profile
-rw------- 1 arborims arborims 1034 Sep 10 14:37 .sh_history
-rw-r--r-- 1 arborims arborims 8 Apr 18 2005 .THIS_SYSTEM
-rw-r--r-- 1 arborims arborims 2048 May 10 2007 123.dump
drwxr-xr-x 2 arborims arborims 512 Sep 10 13:25 batch
drwxr-xr-x 4 arborims arborims 512 Sep 10 16:08 beerman
drwxr-xr-x 3 arborims arborims 512 Jun 23 2005 bifNcic
lrwxrwxrwx 1 arborims arborims 15 Apr 18 2005 bin -> /mnt/arbor6/bin
drwxr-xr-x 29 arborims arborims 512 Apr 18 2005 data
-rw------- 1 arborims arborims 325 May 15 2007 dead.letter
drwxr-xr-x 2 arborims arborims 512 Nov 15 18:01 dist_file
-rw-r--r-- 1 arborims arborims 140391 May 25 2007 find.dt
drwxr-xr-x 10 arborims arborims 512 Sep 10 16:10 IMS
-rw-r--r-- 1 arborims arborims 207795200 Dec 31 2006 ims.dmp
drwxr-xr-x 7 arborims arborims 512 Aug 25 2005 iris
drwxr-xr-x 5 arborims arborims 512 Jun 13 16:40 julian
-rw-r--r-- 1 arborims arborims 124 Apr 18 2005 local.cshrc
-rw-r--r-- 1 arborims arborims 577 Apr 18 2005 local.login
-rw-r--r-- 1 arborims arborims 562 Apr 18 2005 local.profile
drwxr-xr-x 2 arborims arborims 12288 Nov 15 19:30 log
-rw-r--r-- 1 arborims arborims 308 Oct 11 14:38 mbox
drwxr-xr-x 2 arborims arborims 1024 Nov 8 09:42 scripts
drwxr-xr-x 17 arborims arborims 512 Jun 12 2003 site_specific
drwxr-xr-x 3 arborims arborims 1024 Nov 29 17:33 teng
drwxr-xr-x 2 arborims arborims 512 Dec 7 11:47 test
'226 ASCII Transfer complete.'
iambic 2007-12-05
  • 打赏
  • 举报
回复
一、熟悉socket。
二、了解ftp协议。
需要这两个条件。
资源下载链接为: https://pan.quark.cn/s/9e7ef05254f8 【久久在线FLASH系统】是一款专为久久在线网站打造的交互式Flash平台,集成了前台展示与后台管理功能,满足内容发布、管理和用户互动的需求。Flash技术曾广泛应用于网页动画和互动内容,尤其在早期互联网时代,在游戏、广告和多媒体教学等领域发挥了重要作用。该系统的核心包括以下几个关键方面: Flash技术:系统利用Flash创建动态图形、动画和交互内容,依赖Adobe Flash Player运行。其编程语言ActionScript支持面向对象开发,便于实现复杂逻辑和交互效果。 后台管理系统:作为系统的控制中心,后台支持内容上传、编辑、分类、权限设置、用户管理及数据分析,确保内容的有序更新与发布。 产品演示模块:用户可在线预览和体验产品功能,无需下载,通过交互式演示了解产品操作流程和优势。 数据库集成:系统与数据库紧密结合,用于存储Flash文件信息、用户数据及访问记录,实现高效的数据管理与检索。 安全性与优化:系统具备防止非法访问和数据泄露的安全机制,并对Flash内容进行优化,提升加载速度与用户体验。 响应式设计:尽管Flash主要用于桌面端,系统仍考虑多设备兼容性,通过响应式设计适配不同屏幕尺寸,提供一致体验。 API接口:系统支持与其他平台或服务通过API进行数据交互,如社交媒体分享、数据分析等,拓展功能边界。 用户体验:界面设计注重交互性与视觉效果,提升用户满意度和停留时间,增强平台吸引力。 版本控制:系统支持内容版本管理,便于追踪更新历史,方便内容维护与回滚。 性能监控:内置性能监控工具,实时跟踪系统负载与资源使用情况,及时发现并解决问题,保障系统稳定运行。 【久久在线FLASH系统】是一个综合性解决方案,融合了前端展示、后台管理、互动体验和数据分析等功能,体现了当时Web
资源下载链接为: https://pan.quark.cn/s/f989b9092fc5 BP神经网络轴承故障诊断系统是一种基于人工神经网络技术的智能诊断工具,专门用于识别和分析机械设备中轴承的故障情况。该系统的核心是BP神经网络(即反向传播神经网络),它能够模拟人脑的工作方式,通过学习和训练来处理复杂的非线性问题,从而对轴承的健康状态进行精准评估。 BP神经网络的基本结构由输入层、隐藏层和输出层构成。输入层接收来自传感器的信号,如振动数据或声音频率,这些信号反映了轴承的运行状态。隐藏层负责对输入数据进行特征提取和转换,将原始信号转化为更具价值的信息。输出层则输出最终的诊断结果,例如轴承是否正常、轻微磨损或严重损坏等。 在诊断过程中,数据预处理是至关重要的步骤。原始的振动或声学数据通常含有噪声,且不同传感器的数据可能缺乏可比性。因此,需要对这些数据进行滤波、归一化等处理,以提高数据质量。预处理后的数据随后被输入到BP神经网络中。在训练阶段,网络通过反向传播算法调整权重和阈值,使预测结果尽可能接近实际故障类型。这一过程利用了梯度下降法,通过计算误差梯度来更新网络参数,以最小化损失函数(通常是均方误差,用于衡量预测值与真实值之间的差异)。 BP神经网络的性能受到多种因素的影响,包括网络结构(如隐藏层的数量和每层的神经元数量)、学习率以及训练迭代次数等。优化这些参数对于提升诊断精度和速度至关重要。此外,为了验证和提升模型的泛化能力,通常采用交叉验证方法,将数据集分为训练集、验证集和测试集。其中,训练集用于训练网络,验证集用于调整网络参数,测试集则用于评估模型在未知数据上的表现。 总体而言,BP神经网络轴承故障诊断系统凭借其强大的学习和泛化能力,通过对机械设备振动和噪声数据的分析,能够实现对轴承故障的精确识别。该系统有助于提前发现设备故障隐患,减少停机时间,提高生产效率,对工业领域

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧