python编写ftp客户端_Python编写FTP客户端

之前写过一篇FTP服务端的文章,这篇介绍一下客户端吧。在使用虚拟机的时候,由于虚拟机工具没安装成功,所以我决定用FTP在主机与虚拟机之间传送文件,在虚拟机上开启FTP服务,然后把客户端放在主机上,当然也可以颠倒过来。

服务端请参考:python实现FTP服务器

客户端的实现也不算复杂,本文只是简单的实现了文件的上传和下载功能import ftplib

import sys

#获取服务器的ip地址(如192.168.1.107),使用sys.argv可以从命令行参数里面获取

if len(sys.argv) < 2:

tmp = input("please input server address:")

sys.argv.append(tmp)

server_address = sys.argv[1]

#创建FTP实例,并显示欢迎界面

ftp = ftplib.FTP(server_address)

print(ftp.getwelcome())

#登录,输入服务器里添加过的用户名和口令

ftp.login('user', 'pass')

#文件上传

def upload(fname):

fd = open(fname, 'rb')

new_name = input("input new name:")

#以二进制的形式上传

ftp.storbinary("STOR %s" % new_name, fd)

fd.close()

print("upload finished")

#文件下载

def download(fname):

#构建文件的存储路径,这里用的是D盘,可以自行设置

new_path = "D:\\FTPdownload\\" + fname

fd = open(new_path, 'wb')

#以二进制形式下载,注意第二个参数是fd.write,上传时是fd

ftp.retrbinary("RETR %s" % fname, fd.write)

fd.close()

print("download finished")

def main():

#选择操作,上传、下载、退出

op = input("what do you want?(u/d/q)")

if op == "u":

#输入文件完整路径,必要时可以用绝对路径

fname = input("input the file of path:")

upload(fname)

elif op == "d":

fname = input("input the file name:")

download(fname)

else:

print("quit now!")

ftp.quit()

if __name__ == '__main__':

main()

附带一些ftplib库的相关操作:ftp.cwd(pathname) # 设置FTP当前操作的路径

ftp.dir() # 显示目录下所有目录的信息

ftp.nlst() # 获取目录下的文件

ftp.mkd(pathname) # 新建远程目录

ftp.rmd(dirname) # 删除远程目录

ftp.pwd() # 返回当前所在位置

ftp.delete(filename) # 删除远程文件

ftp.rename(old_name, new_name) #将fromname改为toname

ftp.storbinary('STOR filename.txt',file_handel,[bufsize]) # 上传目标文件,最后一个参数可以不填

ftp。retrbinary('RETR filename.txt',file_handel,[bufsize]) # 下载FTP文件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值