【问题标题】:Removing files using python from a server using FTP使用 FTP 从服务器中使用 python 删除文件
【发布时间】:2019-02-12 14:09:38
【问题描述】:

我很难使用这个简单的脚本。它给了我一个找不到文件或目录的错误,但文件在那里。下面的脚本我已经屏蔽了用户并通过加 FTP 站点

这是我的脚本

from ftplib import FTP
ftp = FTP('ftp.domain.ca')
pas = str('PASSWORD')
ftp.login(user = 'user', passwd=pas)
ftp.cwd('/public_html/')

filepaths = open('errorstest.csv', 'rb')

for j in filepaths:
    print(j)
    ftp.delete(str(j))
ftp.quit()

有趣的是,如果我稍微更改脚本以使 ftp.delete() 找到文件并删除它。于是修改成这样:

from ftplib import FTP


ftp = FTP('ftp.domain.ca')
pas = str('PASSWORD')
ftp.login(user = 'user', passwd=pas)
ftp.cwd('/public_html/')
ftp.delete(<file path>)
ftp.quit()

我正在尝试从 csv 文件中读取此内容。我究竟做错了什么?

【问题讨论】:

  • 您能给我们看看ftp.retrlines('LIST')errorstest.csv 的文件内容吗?
  • 谢谢我在下面添加了
  • 请粘贴您得到的确切错误

标签: python server ftp ftplib


【解决方案1】:

无论你展示什么似乎都很好。但是你能试试这个吗?

from ftplib import FTP

ftp = FTP(host)
ftp.login(username, password)
ftp.cwd('/public_html/')
print(ftp.pwd())
print(ftp.nlst())
with open('errorstest.csv') as file:
    for line in file:   
        if line.strip():
            ftp.delete(line.strip())

print(ftp.nlst())

【讨论】:

  • 感谢这有效,但帮助我了解我做错了什么而不是您的解决方案?
  • 我在运行时向您询问了exact error。但我想,你看到的错误是因为errorstest.csv 中的newline,并且由于你没有像我一样检查empt 行,它试图从delete emptyftp 路径,但它失败了。你可以看到,我在我的代码中检查了if line.strip():,它将检查empty 行。您的脚本可能仍然在工作,它只是在尝试deletenew line 时给出错误。我想,这就是你所看到的:)