name = raw_input()
ftp = FTP("")
ftp.login('','') #These work fine
ftp.storbinary("STOR", "%s.txt" % (name)) # I think the issue is here
ftp.quit()
程序在到达这部分时总是崩溃,我用谷歌搜索并找不到答案,我什至尝试只输入文件名,但结果相同。
我究竟做错了什么?
如果您查看文档,该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)
看起来您需要更多的“STOR”作为您的第一个参数。
FTP.storbinary(命令,文件[,块大小,回调,休息])
以二进制传输模式存储文件。命令应该是适当的 STOR 命令:“STOR 文件名”。file 是一个打开的文件对象,它在 EOF 之前使用它的 read() 方法在大小为 blocksize 的块中读取,以提供要存储的数据。blocksize 参数默认为 8192。 callback 是一个可选的可调用单参数,在发送后对每个数据块调用。rest 与 transfercmd() 方法中的含义相同。