在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()