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

程序在到达这部分时总是崩溃,我用谷歌搜索并找不到答案,我什至尝试只输入文件名,但结果相同。

我究竟做错了什么?

4

2 回答 2

1

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

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

这将根据 from 的名称创建一个打开的文件处理程序raw_input(当您接受输入时,您也需要警惕恶意输入)。假设你处理了这个,上下文管理器可以用来打开文件(并确保它关闭):

my_file = "%s.txt" % name
with open(my_file, "rb") as f:
    ftp.storbinary("STOR %s" % (my_file), f)
于 2013-02-14T15:12:43.267 回答
0

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

FTP.storbinary(命令,文件[,块大小,回调,休息])

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

于 2013-02-14T15:13:43.417 回答