本文实例讲述了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) |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。