0

我正在尝试编写一个代码,该代码应该下载过去 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')
4

1 回答 1

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 库。

于 2015-08-05T12:44:57.123 回答