pythonのFTP、SFTP

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
ftplibのインポート FTP 
インポート時間
インポートのOS
インポート shutil

ポート= 21

DEF (ホスト、ポート、ユーザー名、パスワード)
FTP = FTP()
ftp.set_debuglevel( 2
ftp.connect(ホスト、ポート) #接続
ftp.login(ユーザー名、パスワード) #ログ、空の文字列匿名ログインの場合代わりにするのを返す FTPを



DEF DownloadFile (FTP、remotePathは、localPathに)
=のbufsizeを 1024 に設定#キャッシュブロックサイズ
FP =オープン(localPathには、 'WB' )書き込みモードがローカルでファイルを開くために
ftp.retrbinary( 'RETR' + remotePathは、fp.write、 BUFSIZE) 上のサーバーのファイルを受信し、書き込みローカルファイルは、
(ftp.set_debuglevel 0デバッグオフ#ターン
fp.closeを() クローズ#ファイルを


DEF uploadfile (FTP、remotePathは、localPathに)
BUFSIZE = 1024
FP =オープン(localPathに、 'RB'
ftp.storbinary( 'STOR' + remotePathは、FP、BUFSIZE) 上传文件
ftp.set_debuglevel( 0
fp.close( )


もし __name__ == '__main__'
FTP = ftpconnect(ホスト、ポート、ユーザー名、パスワード)
プリント(FTP)

paramiko SFTPのアップロードおよびダウンロードファイル

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
      
      
       
       ビッグボックス   PythonのFTP SFTP ANクラス= "ライン">
        インポート paramiko
        インポート OS
       
       
       
       
       
       


=ホスト名'XXX'
名= 'XXX'
パスワード= 'XXX'
ポート= 22である 。#int型
upload_local_dir = 'XXX'
download_local_dir = 'XXX'
remote_dir = '受信トレイ/' 手動で追加/へ#ノートディレクトリ必要
SFTP_DOWNLOAD_FLAG = Falseの #を使用ファイルが正常にダウンロードされているかどうかを判断します


デフ sftp_callback (転送さ、合計) グローバル SFTP_DOWNLOAD_FLAG場合は転送さ==合計: SFTP_DOWNLOAD_FLAG =




デフ sftpconnect (ホスト、ポート、ユーザー名、パスワード) 試してみる SF = paramiko.Transport((ホスト、ポート)) sf.connect(ユーザー名=ユーザー名、パスワード=パスワード) SFTP = paramiko.SFTPClient.from_transport(SF)の戻り SFTP除く例外として E: プリント( '接続例外:'、E)









デフ sftp_upload (ホスト、ポート、ユーザ名、パスワード、ローカル、リモート)
SF = paramiko.Transport((ホスト、ポート))
sf.connect(ユーザー名=ユーザー名、パスワード=パスワード)
SFTP = paramiko.SFTPClient.from_transport(SF) 試してください場合 os.path.isdir(ローカル):のための F:os.listdir(ローカル) sftp.put(os.path.join(ローカル、f)は、os.path.join(リモート+ F)) sftp.put(リモート、ローカル)を除き、例外として E: プリント( 'アップロード例外'、E)最後に場合 SFがあります









いない 該当なし
sf.close()


DEF sftp_download (ホスト、ポート、ユーザ名、パスワード、ローカル、リモート) グローバル SFTP_DOWNLOAD_FLAG SF = paramiko.Transport((ホスト、ポート)) sf.connect(ユーザー名=ユーザー名、パスワード=パスワード) SFTP paramiko.SFTPClient.from_transport =( SF)のtry#は、それが決定されている場合を除き、フォルダかどうかを判断するためにリモートディレクトリos.path.isdir(ローカル)を使用していないディレクトリは常にFalseを返すかを決定、受信トレイ/親ディレクトリがアクセス権を持っていない可能性があるので、#のための Fをして SFTP。 LISTDIR(リモート): sftpAttributes = sftp.lstat(os.path.join(リモート+ F)) FILESIZE = sftpAttributes.st_size IFファイルサイズ: #ファイルのみが空ではない、関数が呼び出されますsftp_callback











sftp.get(os.path.join(リモート+のF)、os.path.join(ローカル、f)は、sftp_callback) 私はダウンロードしないように、空のファイルをダウンロードするかどうかを#は、sftp_callback裁判官で成功することはできません続けます



IF SFTP_DOWNLOAD_FLAG: ダウンロードに成功し、リモートディレクトリにファイル削除
SFTP_DOWNLOAD_FLAG = Falseの
sftp.remove(os.path.join(リモート+のF)) 他に#アップロードの問題であれば、ローカルファイルを削除アップロードされた os.remove(OS .path.join(ローカル、F))



除く例外として:E
プリント('ダウンロード例外'、E) 最後に場合 SFがあるではないなし sf.close()





IF __name__ == '__main__' : テスト接続 SFTP = sftpconnect(ホスト、ポート、ユーザー名、パスワード) を印刷(SFTP)



おすすめ

転載: www.cnblogs.com/lijianming180/p/12361315.html