第二次上传时 Ftplib 上传失败,目录不为空
Ftplib upload failed on second upload, directory not empty
我正在尝试将所有文件上传到 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/: Directory not empty
继续出现,而第一个文件已正确上传。之后就不行了
我可以在 ftp 服务器中检查我的第一个文件,但是是的。第二个文件不存在。
我猜... storlines
功能仅在上传文件夹为空时有效。
我该如何解决这个问题?
通过快速阅读您的代码,我怀疑问题出在 ftp.mkd
中。您已经在 for
循环的第一次迭代中创建了目录。
要在您的本地系统上测试此错误,请打开终端:
- 写一个
mkdir test
命令
- 再写一个
mkdir test
- 您将看到一个错误:
File Exist
。我认为目录不为空是由服务器中的这个错误生成的。
修改您的代码以将 ftp.mkd
放在 for 循环之前:
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()
再次测试。请记住在测试之前从服务器中删除该目录。
我正在尝试将所有文件上传到 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/: Directory not empty
继续出现,而第一个文件已正确上传。之后就不行了
我可以在 ftp 服务器中检查我的第一个文件,但是是的。第二个文件不存在。
我猜... storlines
功能仅在上传文件夹为空时有效。
我该如何解决这个问题?
通过快速阅读您的代码,我怀疑问题出在 ftp.mkd
中。您已经在 for
循环的第一次迭代中创建了目录。
要在您的本地系统上测试此错误,请打开终端:
- 写一个
mkdir test
命令 - 再写一个
mkdir test
- 您将看到一个错误:
File Exist
。我认为目录不为空是由服务器中的这个错误生成的。
修改您的代码以将 ftp.mkd
放在 for 循环之前:
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()
再次测试。请记住在测试之前从服务器中删除该目录。