python ftp 550错误:

在ftp上传和下载中,都需要设置工作目录,

下载和上传只能用文件名,不能有路径中的冒号

os.chdir("d:/2018_img")

ftp指向路径:

try:ftp.cwd(dirpath)

#coding:utf-8
#ftp演示,首先要在本机或远程服务器开启ftp功能
import sys,os,ftplib,socket

HOST = '192.168.1.1'  #FTP主机
user = "admin"
password = "00"
buffer_size = 8192

#连接登陆
def connect():
    try:
        ftp = ftplib.FTP(HOST)
        ftp.login(user=user,passwd=password)#登录,参数user,password,acct均是可选参数,
        print('已连接到: "%s"' % HOST)
        return ftp
    except (socket.error,socket.gaierror):
        print("FTP登陆失败,请检查主机号、用户名、密码是否正确")
        sys.exit(0)


#中断并退出
def disconnect(ftp):
    ftp.quit()  #FTP.close():单方面的关闭掉连接。FTP.quit():发送QUIT命令给服务器并关闭掉连接

#上传文件
def upload(ftp, filepath):
    f = open(filepath, "rb")
    file_name = os.path.split(filepath)[-1]
    try:
        ftp.storbinary('STOR %s'%file_name, f, buffer_size)
        print('成功上传文件: "%s"' % file_name)
    except ftplib.error_perm:
        return False
    return True

#下载文件
def download(ftp, filename):
    f = open(filename,"wb").write
    try:
        ftp.retrbinary("RETR %s"%filename, f, buffer_size)
        print('成功下载文件: "%s"' % filename)
    except ftplib.error_perm as e:
        print(e)
        return False
    return True

#获取目录下文件或文件夹想详细信息
def listinfo(ftp):
    ftp.dir()


#查找是否存在指定文件
def find(ftp,filename):
    ftp_f_list = ftp.nlst()  #获取目录下文件、文件夹列表
    if filename in ftp_f_list:
        return True
    else:
        return False



def main():
    ftp = connect()                  #连接登陆ftp
    dirpath = '/home/admin/software/opt/nginx-1.2.6/www/image/2018/07/18'                   #目录,不能使用lp/lp1这种多级创建,而且要保证你的ftp目录,右键属性不能是只读的
    # try: ftp.mkd(dirpath)                 #新建远程目录
    # except ftplib.error_perm:
    #     print("目录已经存在或无法创建")
    try:ftp.cwd(dirpath)             #重定向到指定路径
    except ftplib.error_perm:
        print('不可以进入目录:"%s"' % dirpath)
    print(ftp.pwd())                        #返回当前所在位置

    #     print("目录已经存在或无法创建")
    # upload(ftp,"D:/test.txt")       #上传本地文件

    # listinfo(ftp)                   #打印目录下每个文件或文件夹的详细信息
    files = ftp.nlst()              #获取路径下文件或文件夹列表
    os.chdir("d:/2018_img")
    for file in files:
        filename = file
        # ftp.rename("test.txt", filename) #文件改名
        # if os.path.exists(filename):   #判断本地文件是否存在
        #     os.unlink(filename)    #如果存在就删除
        download(ftp, filename)  # 下载ftp文件
    #
    #
    # ftp.delete(filename)              #删除远程文件
    # ftp.rmd("dir1")                  #删除远程目录
    ftp.quit()  #退出

if __name__ == '__main__':
    main()

猜你喜欢

转载自blog.csdn.net/jacke121/article/details/81128368