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搜索并且无法找到答案,我甚至尝试输入文件名,但结果相同。
我做错了什么?
答案 0 :(得分:1)
如果您查看docs,storbinary
方法采用('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()方法相同。