1. #fpt_server.py
    #__*__ encoding=utf-8 __*__
  2. import socket ,os
  3.  
  4. class MyClass(object):
  5.  
  6. def __init__(self):
  7. print('server start.....')
  8. server = socket.socket()
  9. server.bind(('localhost',8888))
  10. server.listen()
  11.  
  12. while True:
  13. conn, addr = server.accept()
  14. print("new conn:",addr)
  15. while True:
  16. print("等待新指令")
  17. data = conn.recv(1024)
  18. if not data:
  19. print("客户端已断开")
  20. break
  21. cmd,filename = data.decode().split()
  22. print(filename)
  23. if os.path.isfile(filename): #�ж��Ƿ����ļ�
  24. f = open(filename,"rb") #���ļ�
  25. file_size = os.stat(filename).st_size #�ļ���С
  26. conn.send( str(file_size).encode() ) #send file size ��ֹճ��
  27. conn.recv(1024) #wait for ack
  28. for line in f:
  29. conn.send(line) #��ʼ����
  30. f.close()
  31. print("send done")
  32.  
  33. server.close()
  1. #ftp_client.py
  2. #__*__ encoding=utf-8 __*__
  3. import socket
  4. import hashlib
  5. from gettext import find
  6.  
  7. class MyClass(object):
  8.  
  9. def __init__(self):
  10. print('client start....')
  11. client = socket.socket()
  12. client.connect(('localhost', 8888))
  13. targetpath='E:\\python\\recievedir'
  14. while True:
  15. cmd = input(">>:").strip()
  16. if len(cmd) == 0:
  17. print('test cmd len is 0')
  18. continue
  19.  
  20. if cmd.startswith("get"): #判断是否以字符串‘get’ 开头
  21. client.send(cmd.encode()) #把需要下载的文件发给server端
  22. server_response = client.recv(1024) #接收server端发过来的文件大小
  23. print("servr response:", server_response) #打印文件大小
  24. client.send(b"ready to recv file") #防止粘包
  25. file_total_size = int(server_response.decode())
  26. print(file_total_size)
  27. received_size = 0 #已经接收的大小
  28. filename = cmd.split()[1]
  29. targetname=filename
  30. targetname=MyClass.retFileWithType('',targetname)
  31. f = open(targetpath+'\\'+targetname + ".new", "wb") #创建新文件 用于保存
  32. # f = open(filename + ".new", "wb") #创建新文件 用于保存
  33.  
  34. while received_size < file_total_size:
  35. if file_total_size - received_size > 1024: # 要收不止一次
  36. size = 1024
  37. else: # 最后一次了,剩多少收多少
  38. size = file_total_size - received_size
  39. print("last receive:", size)
  40.  
  41. data = client.recv(size)
  42. received_size += len(data)
  43. f.write(data)
  44. # print(file_total_size,received_size)
  45. else:
  46. print("file recv done", received_size, file_total_size)
  47. f.close()
  48. client.close()
  49.  
  50. def retFileWithType(self,xname):
  51. # xname=r'E:\\python\\recievedir\\data.pkl'
  52. # xname=r'E:\python\test.jpg'
  53. # print(xname)
  54. xname=repr(xname)
  55. FileWithType=""
  56. try:
  57. if xname.index(r'\\')>0 :
  58. xname=xname.replace(r'\\', '\\')
  59. x=xname.rfind('\\')
  60. # print(x,xname[x+1:])
  61. retFileWithType=xname[x+1:]
  62.  
  63. except (ValueError) as e:
  64. xname=xname.replace('\\', r"\\")
  65. x=xname.rfind(r'\\')
  66. # print(x,xname[x+2:])
  67. retFileWithType=xname[x+2:]
  68.  
  69. retFileWithType = retFileWithType.replace("\'",'')
  70.  
  71. return retFileWithType

  

  

python ftp的更多相关文章

  1. python ftp操作脚本&常用函数

    需求:快速进行ftp上传 ,下载,查询文件 原来直接在shell下操作: 需要[连接,输用户名,输密码,单文件操作,存在超时限制] 太过于繁琐,容易操作失败 脚本改进: 一句命令,搞定多文件上传,下载 ...

  2. python ftp download with progressbar

    i am a new one to learn Python. Try to download by FTP. search basic code from baidu. no one tells h ...

  3. python ftp sftp

    ftp 上传下载文件 12345678910111213141516171819202122232425262728293031323334 from ftplib import FTPimport ...

  4. python FTP上传和下载文件

    1. 连接FTP server import ftplib ftp = ftplib.FTP(ftpserver, user, passwd) 等同于 import ftplib ftp = ftpl ...

  5. Python FTP多线程爆破脚本

    初学python, 自己编写了个FTP多线爆破小脚本代码很丑= = #!usr/bin/env python #!coding=utf-8 __author__='zhengjim' from ftp ...

  6. python ftp 上传

    #!/usr/bin/python # -*-coding:utf- -*- from ftplib import FTP def ftpconnect(host,username,password) ...

  7. [terry笔记]python FTP

    如下是作业,用python做一个ftp,主要利用socket. server端在linux下运行,在client端可以执行shell命令(静态的) 在client端输入get xxx,即可下载. 在c ...

  8. ftplib python ftp

    在气象领域,FTP是比较常用的一个数据来源.本文尝试采用python的ftplib包,实现了从指定ftp服务器中批量下载文件的功能.供大家学习参考. https://docs.python.org/3 ...

  9. python ftp批量上传文件下载文件

    # encoding:utf-8 from ftplib import FTPimport osimport sys _XFER_FILE = 'FILE'_XFER_DIR = 'DIR' clas ...

  10. python ftp 传输文件

    # -*- coding: utf-8 -*- # 本地bytes 数据上报服务器同时创建文件from ftplib import FTP import time, _io from constant ...

随机推荐

  1. Educational Codeforces Round 6 C. Pearls in a Row set

    C. Pearls in a Row There are n pearls in a row. Let's enumerate them with integers from 1 to n from ...

  2. ie浏览器检测不到cookie的问题

    之前做项目由于客户的要求设置缓存必须由后台来设置必须使用cookie(session是没问题的),后期设置时出现了登录页面与首页来还跳转的局面.原因就是首页没检测到登录后的缓存,而后台验证到确实已经是 ...

  3. requireJS实现原理分析

    下面requireJS实现的基本思路  项目地址https://github.com/WangMaoling/require var require = (function(){ //框架版本基本信息 ...

  4. Kettle学习系列之数据仓库、数据整合、ETL、ELT和EII之间的区别?

    不多说,直接上干货! 在数据仓库领域里,的一个重要概念就是数据整合(data intergration).数据整合它就是把不同数据库中的数据整合到一起,对外提供统一的数据视图. 数据整合最典型的案例就 ...

  5. Vue 基础篇

    Vue 基础篇 一.框架与库的区别 JQ库->DOM(DOM操作) + Ajax请求 art-template库->模板引擎 框架 -> 全方位.功能齐全 简易的DOM体验 + 发请 ...

  6. BZOJ 1594 [Usaco2008 Jan]猜数游戏(线段数)

    1594: [Usaco2008 Jan]猜数游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 626  Solved: 260[Submit][S ...

  7. 堆(Heap)-c实现

    这个堆的实现采用数组存储的完全二叉树实现. 最近有点烦躁,先是跳槽到了一个外包公司,感觉2016有点坑,另外一件事就是老婆怀孕了,但是在家里没人照顾,很担心. 这个堆的实现就暂时不优化了,基本的插入, ...

  8. qume-kvm 命令管理

    sudo /etc/init.d/acpid start 安装管理包工具 sudo apt install libguestfs-tools [ qemu-kvm qemu-kvm-tools vir ...

  9. numpy学习笔记 - numpy数组的常见用法

    # -*- coding: utf-8 -*- """ 主要记录代码,相关说明采用注释形势,供日常总结.查阅使用,不定时更新. Created on Mon Aug 20 ...

  10. 【BZOJ 1483】[HNOI2009]梦幻布丁

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 链表,启发式合并. 把x变成y,和y全都变成x. 不论是前者还是后者.连续段的个数都是相同的,不影响结果. 那么我们把x,y中出现次 ...