0x01 正文
最近脚本写上头了,遇到了常见的ftp上传下载,本着方便第一的原则准备写一个。
Python提供了ftplib库,可以轻松地使用FTP进行文件下载和上传。但是既然是脚本设计思路得本着与人方便于己方便的原则,对于其中用到的几个参数做一些设计。
代码解析和说明:
from ftplib import FTP import argparse
在开始之前,我们导入了需要使用的ftplib库和argparse库,前者用于进行FTP操作,后者用于解析命令行参数。
def download_file_from_ftp(server, username, password, ftp_file_path, local_file_path): # 连接到FTP服务器 ftp = FTP(server) ftp.login(username, password)
这里定义了一个名为download_file_from_ftp的函数,它接受FTP服务器地址、用户名、密码、FTP文件路径和本地文件保存路径作为参数。在函数内部,我们使用FTP类创建一个FTP对象,并使用login方法登录到FTP服务器。
# 切换到FTP文件路径 ftp.cwd(ftp_file_path)
使用cwd方法切换到指定的FTP文件路径。
# 下载文件 with open(local_file_path, 'wb') as file: ftp.retrbinary('RETR ' + ftp_file_path, file.write)
使用open函数创建一个本地文件对象,模式为二进制写入('wb')。然后,使用retrbinary方法从FTP服务器下载文件并将其写入本地文件。
# 关闭FTP连接 ftp.quit()
使用quit方法关闭FTP连接。
def upload_file_to_ftp(server, username, password, ftp_file_path, local_file_path): # 连接到FTP服务器 ftp = FTP(server) ftp.login(username, password)
这里定义了一个名为upload_file_to_ftp的函数,功能是将文件上传到FTP服务器。函数的参数与download_file_from_ftp函数相同。
# 切换到FTP文件路径 ftp.cwd(ftp_file_path)
使用cwd方法切换到指定的FTP文件路径。
# 上传文件 with open(local_file_path, 'rb') as file: ftp.storbinary('STOR ' + ftp_file_path, file)
使用open函数创建一个本地文件对象,模式为二进制读取('rb')。然后,使用storbinary方法将本地文件上传到FTP服务器。
# 关闭FTP连接 ftp.quit()
使用quit方法关闭FTP连接。
parser = argparse.ArgumentParser(description='FTP文件下载和上传脚本')
创建一个命令行参数解析器,并设置描述信息。
parser.add_argument('--u', help='FTP服务器地址') parser.add_argument('--n', help='FTP账号') parser.add_argument('--p', help='FTP密码') parser.add_argument('--f', help='FTP服务器文件路径') parser.add_argument('--l', help='本地文件保存路径')
添加命令行参数,包括FTP服务器地址(--u)、FTP账号(--n)、FTP密码(--p)、FTP服务器文件路径(--f)和本地文件保存路径(--l)。
args = parser.parse_args()
解析命令行参数,并将结果存储在args变量中。
download_file_from_ftp(args.server, args.username, args.password, args.ftp_file_path, args.local_file_path)
调用download_file_from_ftp函数,传入命令行参数的值,实现文件下载功能。
upload_file_to_ftp(args.server, args.username, args.password, args.ftp_file_path, args.local_file_path)
调用upload_file_to_ftp函数,传入命令行参数的值,实现文件上传功能。
完整代码: