Невозможно рекурсивно скачивать файлы с помощью ftputil
Я пытаюсь написать код, который должен загружать файлы, созданные за последние 6 дней. Я могу распечатать файлы, но не могу их скачать. Пожалуйста, предложите, где я не прав, и помогите мне завершить сценарий.
import ftplib
import ftputil
import os
import datetime
now=datetime.datetime.now()
print (now)
ago=now-datetime.timedelta(days=6)
print (ago)
class MySession(ftplib.FTP):
def __init__(self, host, userid, password, port):
ftplib.FTP.__init__(self)
self.connect(host, port)
self.login(userid, password)
ftp = ftputil.FTPHost('host', 'user', 'pwd', port=21,
session_factory=MySession)
dir_dest=os.chdir('C:/Python34/New folder')
for root,dirs,files in ftp.walk('Windows Triage' , topdown=True):
for name in files:
path=ftp.path.join(root,name)
st=ftp.stat(path)
ctime=datetime.datetime.fromtimestamp(st.st_mtime)
if ctime>ago:
print(name)
for fname in name:
fpath = ftp.path.join(root,fname)
if ftp.path.isfile(fpath):
ftp.download(fpath,os.path.join(dir_dest, fname), 'b')
1 ответ
Похоже, вы не рекурсивно спускаетесь в каталоги.
Вложите свой код в функцию
def f(dirpath):
for root,dirs,files in ftp.walk(dirpath , topdown=True):
for name in files:
path=ftp.path.join(root,name)
st=ftp.stat(path)
ctime=datetime.datetime.fromtimestamp(st.st_mtime)
if ctime>ago:
print(name)
for fname in name:
fpath = ftp.path.join(root,fname)
if ftp.path.isfile(fpath):
ftp.download(fpath,os.path.join(dir_dest, fname), 'b')
for curdir in dirs:
f(os.path.join(root, curdir))
и назовите это изначально с
f('Windows Triage')
Заметьте: я еще не пробовал и еще не использовал библиотеку python ftp.