python不断扫描目录

时间:2018-05-24 08:38:13

标签: python directory monitoring scanning

我知道还有一些关于它的其他提要,但我找到的这些都没有我的问题:

我有一个python脚本,它连续扫描一个新文件的X目录(今天它是11),将它带到另一个脚本/程序分析/处理它的另一个目录。源或目标可能需要FTP / SFTP / SMB连接。 python脚本是一个启动X进程(使用multiprocessing.Process)的主要脚本,因此可以单独扫描每个源。

我的问题是:有时,在没有警告且没有任何进程停止的情况下,某些源目录不再被扫描(其中有文件,但未列出,因此未被删除)。有时它是一个FTP,有时是samba访问的Windows目录,有时是SFTP。

当我重新启动服务时,它再次运行良好。

有什么想法吗?

此外,python不是义务,我们完全可以交换到其他语言,但目前我们没有时间重建整个应用程序。

修改

connect = Libs.connection.Connection(self.config, server)

通过FTP / SFP / SMB打开连接,如此

def __init__(self, config, server):
    self.config = config
    self.extensions = config['supported']['extensions']
    self.directories = config['directories']
    self.local = ROOT_DIR + '/' + self.directories['app'] + '/' + self.directories['tmp']
    self.source = server
    self.env = self.source['environment']
    self.ftp = ftplib.FTP()
    source, dir = self.buildftp()
    self.ftp.connect(source, self.source['port'])
    self.ftp.login(self.source['login'], self.source['password'])
    self.ftp.set_pasv(config['ftp']['passif'])
    self.ftp.cwd(dir)

每个班级都有不同的列表方法

while True: files = connect.listdir()

,例如FTP.listdir

def listdir(self, dirftp = None):
    lines, filesarr, folders = [], [], []
    if dirftp is None:
        self.ftp.dir(lines.append)
    else:
        self.ftp.dir(dirftp, lines.append)
    for line in lines:
        tmparr = line.split()
        if tmparr[0][0] == 'd':
            name = tmparr[-1]
            if name != '.' and name != '..':
                folders.append(name)
        else:
            name = tmparr[-1]
            filename, fileextension = os.path.splitext(name)
            if fileextension.lower() in self.extensions:
                filesarr.append(name)

    return filesarr

我不得不说我们有另一个python脚本使用完全相同的方法来永久扫描另一个FTP目录,它永远不会失败。

由于

0 个答案:

没有答案
相关问题