python - python不断扫描目录
问题描述
我知道还有其他一些关于它的提要,但我发现它们都没有我的问题:
我有一个 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 目录,并且它永远不会失败。
谢谢
解决方案
推荐阅读
- r - 如何将数字格式化为百分比并限制小数位数
- css - 如何修复仅在 IOS 上出现的网站意外水平倾斜?
- planning - 在 PDDL 2.1 中分配除法值,公制 FF
- python - 谷歌浏览器如何处理 html 页面?
- asp.net-mvc - 托管 ASP.NET MVC 应用程序时,Serilog 不登录数据库
- r - 在 R 中使用 ggplot2 为具有不同渐变的单行着色
- c# - 有没有办法让数组保存 blazor 组件?
- c# - FtpWebRequest 到微控制器总是导致 (451) 处理中的本地错误
- symfony - 如何在 github 上推送你的项目
- maven - 使用 Maven 运行测试而无需多次构建项目