我正在尝试将我的所有文件上传到我的ftp服务器中的time_name
目录(例如“170905_161330”)。
# -*- coding:utf-8 -*-
import ftplib
import os
import datetime
CWD = os.getcwd()
NOW_STR = str(datetime.datetime.now())
LOCAL_STR = "HDD1/AutoBackUp/" + NOW_STR[2:4]+NOW_STR[5:7]+NOW_STR[8:10]+"_"+NOW_STR[11:13]+NOW_STR[14:16]+NOW_STR[17:19]+"/"
FTP_ADDRESS = 'FTP_ADDRESS'
FTP_ID = '1'
FTP_PW = '1'
ftp = ftplib.FTP(FTP_ADDRESS, FTP_ID, FTP_PW)
for i in os.listdir(CWD):
FILENAME = str(i)
print(FILENAME)
ftp.mkd(LOCAL_STR)
LOCAL_NAME = LOCAL_STR + FILENAME
print(str(LOCAL_NAME))
with open(FILENAME, 'rb') as fileOBJ:
ftp.storlines('STOR ' + str(LOCAL_NAME), fileOBJ)
ftp.quit()
但错误
ftplib.error_perm:550 HDD1 / AutoBackUp / 170905_160635 /:目录不为空
继续出现,而第一个文件正确上传。在那之后,它不起作用。
我可以在ftp服务器上查看我的第一个文件,但是是的。第二个文件不存在。
我猜... storlines
功能仅在上传文件夹为空时才有效。
我该如何解决这个问题?
答案 0 :(得分:0)
从非常快速的代码读取,我怀疑问题出在ftp.mkd
。您已经在for
循环的第一次迭代中创建了目录。
要在本地系统上测试此错误,请打开终端:
mkdir test
命令mkdir test
File Exist
。我认为服务器中的此错误会导致目录不为空。修改代码,在{for循环 之前放置ftp.mkd
:
ftp.mkd(LOCAL_STR)
for i in os.listdir(CWD):
FILENAME = str(i)
print(FILENAME)
LOCAL_NAME = LOCAL_STR + FILENAME
print(str(LOCAL_NAME))
with open(FILENAME, 'rb') as fileOBJ:
ftp.storlines('STOR ' + str(LOCAL_NAME), fileOBJ)
ftp.quit()
再次测试。请记住在测试之前从服务器中删除该目录。