python连续扫描目录
我知道还有其他一些关于它的提要,但我发现它们中没有一个有我的问题: 我有一个python脚本,它不断地扫描X个目录(今天是11个),寻找一个新文件,将它带到另一个目录,在那里另一个脚本/程序分析/处理它。源或目标都可能需要FTP/SFTP/SMB连接。python脚本是启动X进程的主脚本(使用python连续扫描目录,python,directory,monitoring,scanning,Python,Directory,Monitoring,Scanning,我知道还有其他一些关于它的提要,但我发现它们中没有一个有我的问题: 我有一个python脚本,它不断地扫描X个目录(今天是11个),寻找一个新文件,将它带到另一个目录,在那里另一个脚本/程序分析/处理它。源或目标都可能需要FTP/SFTP/SMB连接。python脚本是启动X进程的主脚本(使用多处理.Process),因此可以单独扫描每个源代码 我的问题是:有时,在没有警告和任何进程停止的情况下,某些源目录不再被扫描(其中有文件,但没有列出,所以没有被读取)。有时是FTP,有时是samba访问的
多处理.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)
每个类都有不同的列表方法
为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目录,而且它从未失败过
谢谢也许您的代码中有一个bug。如果你有办法向我们展示它…你能分享你的代码吗?如果通过网络访问可能会失去连接?对不起,我编辑了添加一些代码