python ftp服务器定义handle_python ftp和sftp的例子

python ftp 上传、下载文件

#获取昨天日期

TODAY = datetime.date.today()

YESTERDAY = TODAY - datetime.timedelta(days=1)

CURRENTDAY=YESTERDAY.strftime('%Y%m%d')

---------------------------------------------------------------------------------------

#!/usr/bin/env

python

# -*- coding: cp936 -*-

#导入ftplib扩展库

import ftplib

#创建ftp对象实例

ftp = ftplib.FTP()

#指定IP地址和端口,连接到FTP服务,上面显示的是FTP服务器的Welcome信息

FTPIP= "218.108.***.***"

FTPPORT= 21

USERNAME= "ybmftp"

USERPWD= "ybm***"

ftp.connect(FTPIP,FTPPORT)

#通过账号和密码登录FTP服务器

ftp.login(USERNAME,USERPWD)

#如果参数 pasv 为真,打开被动模式传输 (PASV MODE) ,

#否则,如果参数 pasv 为假则关闭被动传输模式。

#在被动模式打开的情况下,数据的传送由客户机启动,而不是由服务器开始。

#这里要根据不同的服务器配置

ftp.set_pasv(0)

#在FTP连接中切换当前目录

CURRTPATH= "/home1/ftproot/ybmftp/testupg/payment"

ftp.cwd(CURRTPATH)

#为准备下载到本地的文件,创建文件对象

DownLocalFilename="YBM_20110629_9001_CHK"

f = open(DownLocalFilename,'wb')

#从FTP服务器下载文件到前一步创建的文件对象,其中写对象为f.write,1024是缓冲区大小

DownRoteFilename="YBM_20110629_9001_CHK"

ftp.retrbinary('RETR ' + DownRoteFilename , f.write ,1024)

#关闭下载到本地的文件

#提醒:虽然Python可以自动关闭文件,但实践证明,如果想下载完后立即读该文件,最好关闭后重新打开一次

f.close()

#关闭FTP客户端连接

ftp.close()

###上传文件

#! /usr/bin/env python

from ftplib import FTP

import sys, getpass, os.path

host="218.108.***.***"

username="ybmftp"

password="ybm!***"

localfile="/home/gws/xym/script/duizhang.txt"

remotepath="~/testpayment"

f=FTP(host)

f.login(username, password)

f.cwd(remotepath)

fd=open(localfile,'rb')

print os.path.basename(localfile)

#否则,如果参数

pasv 为假则关闭被动传输模式。

#在被动模式打开的情况下,数据的传送由客户机启动,而不是由服务器开始。

#这里要根据不同的服务器配置

ftp.set_pasv(0)

f.storbinary('STOR %s ' % os.path.basename(localfile),fd)

fd.close()

f.quit

Python中的ftplib模块

Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件

FTP的工作流程及基本操作可参考协议RFC959

ftp登陆连接

from ftplib import FTP #加载ftp模块

ftp=FTP() #设置变量

ftp.set_debuglevel(2) #打开调试级别2,显示详细信息

ftp.connect("IP","port") #连接的ftp sever和端口

ftp.login("user","password")#连接的用户名,密码

print ftp.getwelcome() #打印出欢迎信息

ftp.cmd("xxx/xxx") #更改远程目录

bufsize=1024 #设置的缓冲区大小

filename="filename.txt" #需要下载的文件

file_handle=open(filename,"wb").write #以写模式在本地打开文件

ftp.retrbinaly("RETR filename.txt",file_handle,bufsize) #接收服务器上文件并写入本地文件

ftp.set_debuglevel(0) #关闭调试模式

ftp.quit #退出ftp

ftp相关命令操作

ftp.cwd(pathname) #设置FTP当前操作的路径

ftp.dir() #显示目录下文件信息

ftp.nlst() #获取目录下的文件

ftp.mkd(pathname) #新建远程目录

ftp.pwd() #返回当前所在位置

ftp.rmd(dirname) #删除远程目录

ftp.delete(filename) #删除远程文件

ftp.rename(fromname, toname)#将fromname修改名称为toname。

ftp.storbinaly("STOR filename.txt",file_handel,bufsize) #上传目标文件

ftp.retrbinary("RETR filename.txt",file_handel,bufsize)#下载FTP文件

from ftplib import FTP

ftp = FTP()

timeout = 30

port = 21

ftp.connect('192.168.1.188',port,timeout) # 连接FTP服务器

ftp.login('UserName','888888') # 登录

print ftp.getwelcome()  # 获得欢迎信息

ftp.cwd('file/test')    # 设置FTP路径

list = ftp.nlst()       # 获得目录列表

for name in list:

print(name)             # 打印文件名字

path = 'd:/data/' + name    # 文件保存路径

f = open(path,'wb')         # 打开要保存文件

filename = 'RETR ' + name   # 保存FTP文件

ftp.retrbinary(filename,f.write) # 保存FTP上的文件

ftp.delete(name)            # 删除FTP文件

ftp.storbinary('STOR '+filename, open(path, 'rb')) # 上传FTP文件

ftp.quit()                  # 退出FTP服务器

import ftplib

import os

import socket

HOST = 'ftp.mozilla.org'

DIRN = 'pub/mozilla.org/webtools'

FILE = 'bugzilla-3.6.7.tar.gz'

def main():

try:

f = ftplib.FTP(HOST)

except (socket.error, socket.gaierror):

print 'ERROR:cannot reach " %s"' % HOST

return

print '***Connected to host "%s"' % HOST

try:

f.login()

except ftplib.error_perm:

print 'ERROR: cannot login anonymously'

f.quit()

return

print '*** Logged in as "anonymously"'

try:

f.cwd(DIRN)

except ftplib.error_perm:

print 'ERRORL cannot CD to "%s"' % DIRN

f.quit()

return

print '*** Changed to "%s" folder' % DIRN

try:

#传一个回调函数给retrbinary() 它在每接收一个二进制数据时都会被调用

f.retrbinary('RETR %s' % FILE, open(FILE, 'wb').write)

except ftplib.error_perm:

print 'ERROR: cannot read file "%s"' % FILE

os.unlink(FILE)

else:

print '*** Downloaded "%s" to CWD' % FILE

f.quit()

return

if __name__ == '__main__':

main()

os.listdir(dirname):列出dirname下的目录和文件

os.getcwd():获得当前工作目录

os.curdir:返回当前目录('.')

os.chdir(dirname):改变工作目录到dirname

os.path.isdir(name):判断name是不是一个目录,name不是目录就返回false

os.path.isfile(name):判断name是不是一个文件,不存在name也返回false

os.path.exists(name):判断是否存在文件或目录name

os.path.getsize(name):获得文件大小,如果name是目录返回0L

os.path.abspath(name):获得绝对路径

os.path.normpath(path):规范path字符串形式

os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)

os.path.splitext():分离文件名与扩展名

os.path.join(path,name):连接目录与文件名或目录

os.path.basename(path):返回文件名

os.path.dirname(path):返回文件路径

os.remove(dir) #dir为要删除的文件夹或者文件路径

os.rmdir(path) #path要删除的目录的路径。需要说明的是,使用os.rmdir删除的目录必须为空目录,否则函数出错。

os.path.getmtime(name) #获取文件的修改时间

os.stat(path).st_mtime#获取文件的修改时间

os.stat(path).st_ctime #获取文件修改时间

os.path.getctime(name)#获取文件的创建时间

python中对文件、文件夹的操作需要涉及到os模块和shutil模块。

创建文件:

1) os.mknod("test.txt")       创建空文件

2) open("test.txt",w)           直接打开一个文件,如果文件不存在则创建文件

创建目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值