我尝试使用python和ftplib将整个目录上传到服务器。
template_dir = '/Users/seb/projects/citats/static/templates/blanka/'
for root, dirs, files in os.walk(template_dir, topdown=True):
relative = root[len(template_dir):].lstrip(os.sep)
for d in dirs:
ftp.mkd(os.path.join(relative, d))
for f in files:
ftp.cwd(relative)
ftp.storbinary('STOR ' + f, open(os.path.join(template_dir, relative, f), 'rb'))
ftp.cwd('/')
ftp.quit()
这个解决方案工作正常,但在我看来它可以得到广泛的改进(特别是文件循环)。 你能建议我吗?
答案 0 :(得分:0)
您没有关闭文件
for f in files:
filePath = os.path.join(template_dir,relative,f)
ftp.cwd(relative)
with open(filePath, 'rb') as fileObj:
ftp.storbinary('STOR '+f,fileObj)
ftp.cwd('/')
对于那些不知道的人来说,打开(file_path,mode)为f:'当缩进与''
对齐时,语法会自动关闭文件