ftplib.error_pern 501没有文件名?

时间:2013-02-14 15:03:11

标签: python ftplib

    name = raw_input()
    ftp = FTP("")
    ftp.login('','')  #These work fine
    ftp.storbinary("STOR", "%s.txt" % (name)) # I think the issue is here
    ftp.quit()

程序在到达此部分时总是崩溃,我用Google搜索并且无法找到答案,我甚至尝试输入文件名,但结果相同。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

如果您查看docsstorbinary方法采用('STOR filename', <file_object>)的形式。上面的问题是您没有完整的STOR命令作为您的第一个(command)参数。由于您需要将一个打开的文件处理程序作为file参数传递,您可以尝试类似:

ftp.storbinary("STOR %s.txt" % (name), open("%s.txt" % name, 'rb'))

这会根据raw_input的名称创建一个打开的文件处理程序(因为您接受输入,您也希望对恶意输入保持警惕)。假设您处理了这个问题,可以使用上下文管理器打开文件(并确保它关闭):

my_file = "%s.txt" % name
with open(my_file, "rb") as f:
    ftp.storbinary("STOR %s" % (my_file), f)

答案 1 :(得分:0)

看起来你需要更多的“STOR”作为你的第一个参数。

  

FTP.storbinary(命令,文件[,blocksize,callback,rest])

     

以二进制传输模式存储文件。命令应该是一个合适的STOR命令:“STOR filename”。 file是一个打开的文件对象,在EOF中使用read()方法读取大小块大小的块以提供要存储的数据。 blocksize参数默认为8192. callback是一个可选的单个参数callable,在每个数据块发送后调用。 rest意味着与transfercmd()方法相同。