本文实例讲述了Python实现FTP上传文件或文件夹实例。分享给大家供大家参考。具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
import sys
import os
import json
from ftplib import FTP
_XFER_FILE = 'FILE'
_XFER_DIR = 'DIR'
class Xfer( object ):
'''''
@note: upload local file or dirs recursively to ftp server
'''
def __init__( self ):
self .ftp = None
def __del__( self ):
pass
def setFtpParams( self , ip, uname, pwd, port = 21 , timeout = 60 ):
self .ip = ip
self .uname = uname
self .pwd = pwd
self .port = port
self .timeout = timeout
def initEnv( self ):
if self .ftp is None :
self .ftp = FTP()
print '### connect ftp server: %s ...' % self .ip
self .ftp.connect( self .ip, self .port, self .timeout)
self .ftp.login( self .uname, self .pwd)
print self .ftp.getwelcome()
def clearEnv( self ):
if self .ftp:
self .ftp.close()
print '### disconnect ftp server: %s!' % self .ip
self .ftp = None
def uploadDir( self , localdir = './' , remotedir = './' ):
if not os.path.isdir(localdir):
return
self .ftp.cwd(remotedir)
for file in os.listdir(localdir):
src = os.path.join(localdir, file )
if os.path.isfile(src):
self .uploadFile(src, file )
elif os.path.isdir(src):
try :
self .ftp.mkd( file )
except :
sys.stderr.write( 'the dir is exists %s' % file )
self .uploadDir(src, file )
self .ftp.cwd( '..' )
def uploadFile( self , localpath, remotepath = './' ):
if not os.path.isfile(localpath):
return
print '+++ upload %s to %s:%s' % (localpath, self .ip, remotepath)
self .ftp.storbinary( 'STOR ' + remotepath, open (localpath, 'rb' ))
def __filetype( self , src):
if os.path.isfile(src):
index = src.rfind( '\\' )
if index = = - 1 :
index = src.rfind( '/' )
return _XFER_FILE, src[index + 1 :]
elif os.path.isdir(src):
return _XFER_DIR, ''
def upload( self , src):
filetype, filename = self .__filetype(src)
self .initEnv()
if filetype = = _XFER_DIR:
self .srcDir = src
self .uploadDir( self .srcDir)
elif filetype = = _XFER_FILE:
self .uploadFile(src, filename)
self .clearEnv()
if __name__ = = '__main__' :
srcDir = r "C:\sytst"
srcFile = r 'C:\sytst\sar.c'
xfer = Xfer()
xfer.setFtpParams( '192.x.x.x' , 'jenkins' , 'pass' )
xfer.upload(srcDir)
xfer.upload(srcFile)
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。