import datetime from ftplib import FTP import os # local dir local_dir = 'E:/nwp_file/' # ftp info ftp_ip = '191.168.2.222' ftp_port = 21 ftp_user_name = 'root' ftp_password = 'root' ftp_file_dir = '/home/ftp' # file info file_prefix = 'MX_
from ftplib import FTP
import os
# local dir
local_dir = 'E:/nwp_file/'
# ftp info
ftp_ip = '191.168.2.222'
ftp_port = 21
ftp_user_name = 'root'
ftp_password = 'root'
ftp_file_dir = '/home/ftp'
# file info
file_prefix = 'MX_XBHFD_WF_'
file_suffix = '06.txt'
file_date_begin = '20220401'
file_date_end = '20220430'
file_date_format = '%Y%m%d'
# download setting
is_download_current_day = False
# 判断本地文件夹是否存在,不存在则创建
if not os.path.exists(local_dir):
os.mkdir(local_dir)
# 连接
ftp = FTP()
ftp.connect(ftp_ip, ftp_port)
ftp.login(ftp_user_name, ftp_password)
print('login ftp sunccess...')
# cd到气象文件目录
ftp.cwd(ftp_file_dir)
# 打印目录
# print(ftp.dir())
# 遍历目录下所有文件
for file_or_dir_name in ftp.nlst():
# print(file_or_dir_name)
if file_or_dir_name.startswith(file_prefix) and file_or_dir_name.endswith(file_suffix):
# 只下载当天文件
if is_download_current_day:
cur_day = datetime.datetime.now().strftime(file_date_format)
if cur_day in file_or_dir_name:
new_file_path = local_dir + file_or_dir_name
file_open = open(new_file_path, 'wb')
ftp.retrbinary('RETR ' + file_or_dir_name, file_open.write)
print('download file %s success...' % file_or_dir_name)
# 下载指定日期范围
else:
# 日期开始和结束时间
date_begin = datetime.datetime.strptime(
file_date_begin, file_date_format)
date_end = datetime.datetime.strptime(
file_date_end, file_date_format)
date_delta = datetime.timedelta(days=1)
# 循环遍历日期范围,下载指定文件
while date_begin <= date_end:
date_begin_str = date_begin.strftime(file_date_format)
if date_begin_str in file_or_dir_name:
new_file_path = local_dir + file_or_dir_name
file_open = open(new_file_path, 'wb')
ftp.retrbinary('RETR ' + file_or_dir_name, file_open.write)
print('download file %s success...' % file_or_dir_name)
date_begin += date_delta
pass
print('download finished...')
# 关闭连接
ftp.close()
print('logout ftp sunccess...')