我想写一个Python脚本,它允许我在文件到达一定年龄后从FTP服务器上删除文件。我准备了下面的scpt,但它抛出了错误消息:WindowsError: [Error 3] The system cannot find the path specified: '/test123/*.*'
有人知道如何解决这个问题吗?提前谢谢你!
import os, time
from ftplib import FTP
ftp = FTP('127.0.0.1')
print "Automated FTP Maintainance"
print 'Logging in.'
ftp.login('admin', 'admin')
# This is the directory that we want to go to
path = 'test123'
print 'Changing to:' + path
ftp.cwd(path)
files = ftp.retrlines('LIST')
print 'List of Files:' + files
#--everything works fine until here!...
#--The Logic which shall delete the files after the are 7 days old--
now = time.time()
for f in os.listdir(path):
if os.stat(f).st_mtime < now - 7 * 86400:
if os.path.isfile(f):
os.remove(os.path.join(path, f))
except:
exit ("Cannot delete files")
print 'Closing FTP connection'
ftp.close()
好的。假设您的FTP服务器支持
MLSD
命令,使用以下代码创建一个模块(这是我用于将远程FTP站点与本地目录同步的脚本中的代码):模块代码
单目录案例
如果要处理目录的文件,可以:
这应该是你想要的。
目录及其子目录
现在,如果这应该递归地工作,那么您必须在“single directory case”的代码中进行以下两个更改:
以及
可能的警告
我使用过的服务器在
STOR
和DELE
命令中的相对路径没有任何问题,因此site.delete
使用相对路径也可以工作。如果FTP服务器需要无路径文件名,则应首先.cwd
到提供的path
,再.delete
到普通的ftpfile.name
,然后.cwd
返回到基文件夹。好吧,与其进一步分析你发布的代码,这里有一个例子可以让你走上正轨。
运行它,你会得到类似这样的输出,这应该是你努力实现目标的开始。要完成它,您需要将第一个结果解析为datetime,将其与“now”进行比较,如果远程文件太旧,则使用ftp.delete()删除它。
我不得不这样做,花了一段时间,以为我可以节省一些时间在这里。我们使用安装了ftputil模块的python:
相关问题 更多 >
编程相关推荐