python,如何下载FTP上的文件 怎么把Python ftplib 中下载文件名写成函数?
python\uff0c\u5982\u4f55\u4e0b\u8f7dFTP\u4e0a\u6307\u5b9a\u65f6\u95f4\u6bb5\u5185\u7684\u6587\u4ef6import ftplibpath = 'c:/user/pcwuyu/desktop/1c0/'l = []def ls_filter(line): ll = line.split() if ll[5]=='Jan' and ll[6]=='9' and ll[7]>'14:30' and ll[7]<'15:30': if ll[8]!='.' and ll[8]!='..': l.append(ll[8]) return ll[8]ftp = ftplib.FTP('127.0.0.1')ftp.login('root','password')ftp.cwd('/mnt/1c0')ftp.set_pasv(False)fs = ftp.retrlines('LIST',ls_filter)for i in l: ftp.retrbinary('RETR ' + i,open(path + i, 'wb').write)ftp.quit()\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\uff0c\u4e0b\u8f7d1\u67089\u65e514\uff1a30\uff5e15\uff1a30\u7684\u6587\u4ef6
\u62fc\u88c5\u540e\u4f5c\u4e3a\u53c2\u6570\uff1a
cmd = 'RETR ' + name()
frp.retrbinary(cmd, file_handel, bufsize)
import ftplib, socket
def connect():
CONST_HOST = "xxxx.xxxx.xxx"
CONST_USERNAME = "xxxxx"
CONST_PWD = "xxxxxxx"
try:
ftp = ftplib.FTP(CONST_HOST)
ftp.login(CONST_USERNAME, CONST_PWD)
return ftp
except socket.error, socket.gaierror:
print("FTP is unavailable,please check the host,username and password!")
sys.exit(0)
def disconnect(ftp):
ftp.quit()
def download(ftp, filename):
#预定义每次写文件的buffer
CONST_BUFFER_SIZE = 8192
f = open(filename, "wb").write
try:
ftp.retrbinary("RETR %s" % filename, f, CONST_BUFFER_SIZE)
except ftplib.error_perm:
return False
return True
def find(ftp, filename):
ftp_f_list = ftp.nlst()
if filename in ftp_f_list:
return True
else:
return False
ftp = connect()
#yourfile为你想要下载的文件
if find(ftp, 'yourfile'):
download(ftp, 'yourfile')
disconnect(ftp)
通过python下载FTP上的文件夹的实现代码:
# -*- encoding: utf8 -*-
import os
import sys
import ftplib
class FTPSync(object):
def __init__(self):
self.conn = ftplib.FTP('10.22.33.46', 'user', 'pass')
self.conn.cwd('/') # 远端FTP目录
os.chdir('/data/') # 本地下载目录
def get_dirs_files(self):
u''' 得到当前目录和文件, 放入dir_res列表 '''
dir_res = []
self.conn.dir('.', dir_res.append)
files = [f.split(None, 8)[-1] for f in dir_res if f.startswith('-')]
dirs = [f.split(None, 8)[-1] for f in dir_res if f.startswith('d')]
return (files, dirs)
def walk(self, next_dir):
print 'Walking to', next_dir
self.conn.cwd(next_dir)
try:
os.mkdir(next_dir)
except OSError:
pass
os.chdir(next_dir)
ftp_curr_dir = self.conn.pwd()
local_curr_dir = os.getcwd()
files, dirs = self.get_dirs_files()
print "FILES: ", files
print "DIRS: ", dirs
for f in files:
print next_dir, ':', f
outf = open(f, 'wb')
try:
self.conn.retrbinary('RETR %s' % f, outf.write)
finally:
outf.close()
for d in dirs:
os.chdir(local_curr_dir)
self.conn.cwd(ftp_curr_dir)
self.walk(d)
def run(self):
self.walk('.')
def main():
f = FTPSync()
f.run()
if __name__ == '__main__':
main()
绛旓細sftp = paramiko.SFTPClient.from_transport(tran)sftp.get('/vrpcfg.cfg', r'C:\Users\exampleuser\.ssh\test.cfg')鏈鍚庯紝璁板緱鍦ㄦ搷浣滃畬鎴愬悗鍏抽棴杩炴帴锛歝lient.close()tran.close()閫氳繃浠ヤ笂姝ラ锛孭aramiko妯″潡灏嗗府鍔╀綘鍦Python涓交鏉惧疄鐜板畨鍏ㄧ殑杩滅▼鎿嶄綔鍜屾枃浠剁鐞嗭紝鎻愬崌浣犵殑缂栫▼鏁堢巼鍜屾暟鎹紶杈撳畨鍏ㄦс
绛旓細鍏蜂綋鏂规硶濡備笅锛氬畨瑁呮渶鏂扮増鏈殑WinPython-32bit-2.7.9.4锛岀劧鍚庡畨瑁2013骞寸殑鏈鏅氱増鏈琖inPython-32bit-2.7.6.2锛屾彁鍙2.7.6.2鐗堟湰涓嬬殑zmq鏂囦欢澶广傜洿鎺ヨ2.x绯诲垪鍜3.x绯诲垪鐨勬渶鏂扮増鏈浜嗭紝涓嶉渶瑕佷弗鏍煎搴斿畨瑁呴偅涓や釜鐗堟湰銆侾ython 3.3.232浣嶏細http://www.python.org/ftp/python/3.3.2/...
绛旓細pythonftp杩炴帴杩滅▼鎵цcmd鎿嶄綔鏂规硶濡備笅锛1銆乸ipinstallpywinrm瀹夎妯″潡鍗冲彲銆2銆亀indows绯荤粺鏈嶅姟鍣ㄩ渶瑕佸紑鍚痺inrm鏈嶅姟銆3銆乧md鍛戒护鍙互鍐欐垚涓涓.bat鏂囦欢锛屽湪鏈嶅姟鍣ㄤ笂鐩存帴鎵ц鍗冲彲銆
绛旓細浠python 2.7寮濮ftplib妯″潡灏辨湁涓涓敮鎸乫tp ssl鐨勭被FTP_TLS浜 鍏蜂綋鍙互鐪嬭繖閲 http://docs.python.org/library/ftplib.html#ftplib.FTP_TLS
绛旓細浣跨敤Python鍐FTP瀹㈡埛绔椂锛屼綘鎵闇瑕佸仛鐨勫氨鏄鍏ftplib妯″潡锛屽苟瀹炰緥鍖栦竴涓猣tplib.FTP绫诲璞★紝鎵鏈夌殑FTP鎿嶄綔锛堝鐧婚檰锛屼紶杈撴枃浠跺拰鐧诲嚭绛夛級閮借浣跨敤杩欎釜瀵硅薄鏉ュ畬鎴愩備互涓嬫槸鎿嶄綔鐨勫熀鏈楠わ細(1) 杩炴帴鍒版湇鍔″櫒 (2) 鐧婚檰鏈嶅姟鍣 (3) 鍙戝嚭鏈嶅姟璇锋眰(鏂囦欢浜や簰)(4) 閫鍑 ...
绛旓細涓嶇敤瀹夎锛宖tplib鏄嚜甯︾殑妯″潡 import ftplib 鍗冲彲
绛旓細锛2锛夊彲浠ユ湁澶氫釜瀹㈡埛绔闂湇鍔″櫒绔 锛3锛夊彲浠ュ閲嶅悕鏂囦欢閲嶆柊涓婁紶鎴涓嬭浇 FTP锛團ile Transfer Protocol锛屾枃浠朵紶杈撳崗璁級 鏄 TCP/IP 鍗忚缁勪腑鐨勫崗璁箣涓銆侳TP鍗忚鍖呮嫭涓や釜缁勬垚閮ㄥ垎锛屽叾涓涓篎TP鏈嶅姟鍣紝鍏朵簩涓篎TP瀹㈡埛绔傚叾涓璅TP鏈嶅姟鍣ㄧ敤鏉ュ瓨鍌ㄦ枃浠讹紝鐢ㄦ埛鍙互浣跨敤FTP瀹㈡埛绔氳繃FTP鍗忚璁块棶浣嶄簬FTP鏈嶅姟鍣ㄤ笂鐨勮祫婧...
绛旓細涔熷彲浠ョ敤python绛夎剼鏈В鍐 涓FTP鍛戒护璇存槑 鍦╳indows绯荤粺涓洜涓篎TP鏄竴涓▼搴 濡傛灉鍦╞at鑴氭湰涓洿鎺ヨ皟鐢‵TP鐨勫懡浠 鍦ㄦ墽琛屾椂鎬讳細寮瑰嚭鍛戒护琛岀獥鍙 寰幆鍦>FTP鍏夋爣杩 鎵浠ヨ鎹㈢鏂瑰紡 鍒╃敤 S:filename 鏇村鐨勫懡浠よ杈撳叆 h鏌ョ湅 FTP鐧诲綍鎴愬姛鍚 闇瑕涓嬭浇杩滅▼鍗曚釜鏂囦欢鏃 浣跨敤get鍛戒护 濡傛灉涓嬭浇澶氫釜鏂囦欢鏃 鐢╩get 瀹冩敮鎸侀氶厤绗 ...
绛旓細1銆乮pynb鏂囦欢鍙互閫氳繃鍦ㄦ湰鍦板畨瑁匤upyterlab鎵撳紑,鑰孞upyterlab瀹夎闇瑕侀氳繃涓嬭浇骞跺畨瑁匒naconda銆1.棣栧厛鎴戜滑瀹夎Anaconda杩欐杞欢銆2.瀹夎瀹屾垚鍚庢墦寮寮濮嬭彍鍗曟壘鍒癆naconda3(64-bit)锛岀偣鍑籄nacondaPrompt(绫讳技windows鐨勫懡浠よ宸ュ叿)銆3.鍦ㄥ懡浠よ杩涘叆瀛樻斁ipynb鏂囦欢鎵鍦ㄧ殑鐩綍杈撳叆鍛戒护jupyterlab灏嗗湪璇ョ洰褰曚笅鍚姩Jupyter...
绛旓細Python鎻愪緵浜嗕竴涓唴缃殑鎿嶄綔ftp鐨勬ā鍧梖tplib锛岃兘澶熷畬鎴恌tp鐧诲綍銆佹煡鐪嬬洰褰曘佷慨鏀圭洰褰曘佷笂浼犳枃浠剁瓑鍔熻兘銆備竴鑸渶姹傚簲璇ヨ冻澶熶簡銆