python - ftplib 问题不放置文件

标签 python linux ftp ftplib

我正在尝试使用 ftplib 在服务器上放置一个文件,但我遇到了一些我不知道如何处理的错误。登录有效,但尝试上传文件输出错误。 这是我正在使用的代码:

import ftplib
import os

def upload(ftp, file):
    ext = os.path.splitext(file)[1]
    if ext in (".txt", ".htm", ".html"):
        ftp.storlines("STOR " + file, open(file))
    else:
        ftp.storbinary("STOR " + file, open(file, "rb"), 1024)

ftp = ftplib.FTP("")
ftp.login("", "")

upload(ftp, "hist.txt")

错误日志是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in upload
  File "/home/root/anaconda2/lib/python2.7/ftplib.py", line 492, in storlines
    self.voidcmd('TYPE A')
  File "/home/root/anaconda2/lib/python2.7/ftplib.py", line 254, in voidcmd
    return self.voidresp()
  File "/home/root/anaconda2/lib/python2.7/ftplib.py", line 229, in voidresp
    resp = self.getresp()
  File "/home/root/anaconda2/lib/python2.7/ftplib.py", line 215, in getresp
    resp = self.getmultiline()
  File "/home/root/anaconda2/lib/python2.7/ftplib.py", line 201, in getmultiline
    line = self.getline()
  File "/home/root/anaconda2/lib/python2.7/ftplib.py", line 191, in getline
    if not line: raise EOFError
EOFError

这是怎么回事>?

最佳答案

我能够通过设置一个必须在发送二进制文件之前完成的配置来解决这个问题。 这是配置:

ftp.voidcmd('TYPE I')

我希望这对其他人也有帮助。

关于python - ftplib 问题不放置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36411927/

相关文章:

linux - slurm 脚本给出 "command not found"

regex - 从 'system' 命令返回的字符串的编码

java - 在java中从SFTP服务器检索文件列表

Java Apache FTPClient API : Why isn't logout() in finally clause?

python - Apache 不提供 django 管理静态文件

python - 排序 : How to treat special character greater than alphabetical in Python 2?

linux - 进程内存大小 solaris

用于容纳文件路径的 C# 代码从 windows 更改为 ftp(使用用户名密码)

python - datetime.strptime 在 PyQt4 QtGui.QWidget 继承类中不起作用

python - 堆叠的 matplotlib 条中的替代颜色