Python 使用psuedo文件将空文件上载到ftp
据我所知,用ftp创建一个空文件是不可能的,你必须在本地驱动器上创建一个空文件,上传它,然后在完成后删除它。我想知道是否有可能采取以下措施:Python 使用psuedo文件将空文件上载到ftp,python,file,ftp,Python,File,Ftp,据我所知,用ftp创建一个空文件是不可能的,你必须在本地驱动器上创建一个空文件,上传它,然后在完成后删除它。我想知道是否有可能采取以下措施: class FakeFile: def read(self): return '\x04' ftpinstance.storbinary('stor fe', FakeFile()) 我认为这可能是可行的,因为storbinary的文档说它接受一个带有“read”方法的对象并调用它,直到它返回EOF,并且\x04是ASCII E
class FakeFile:
def read(self):
return '\x04'
ftpinstance.storbinary('stor fe', FakeFile())
我认为这可能是可行的,因为storbinary的文档说它接受一个带有“read”方法的对象并调用它,直到它返回EOF,并且\x04是ASCII EOF字符。不过我已经尝试过了,文件在服务器上的大小是随机的千字节数。我有什么误解吗?在现代用法中,文件结尾不是ASCII 4。这是XMODEM和电传打字机时代的过时用法。试试这个:
class FakeFile:
def read(self, size=0):
return ''
因为空读是EOF
使用当前代码,您应该得到一个完全由“\x04”字符组成的随机长度文件。这是因为它在读取时似乎总是有数据^_- 在现代用法中,文件结尾不是ASCII 4。这是XMODEM和电传打字机时代的过时用法。试试这个:
class FakeFile:
def read(self, size=0):
return ''
因为空读是EOF
使用当前代码,您应该得到一个完全由“\x04”字符组成的随机长度文件。这是因为它在读取时似乎总是有数据^_- 实际上,文档读取“读取到EOF”。我通过使read函数返回一个空字符串来解决这个问题。实际上,文档读取“读取到EOF”。我通过使read函数返回一个空字符串来解决这个问题。无需实现自己的类文件,只需使用Python 3中内置模块StringIO或BytesIO中的内存文件即可:
import ftplib
import cStringIO
ftp = ftplib.FTP('ftp.example.com')
ftp.login('user', 'pass')
voidfile = cStringIO.StringIO('')
ftp.storbinary('STOR emptyfile.foo', voidfile)
ftp.close()
voidfile.close()
无需实现自己的类文件,只需使用Python 3中内置模块StringIO或BytesIO中的内存文件即可:
import ftplib
import cStringIO
ftp = ftplib.FTP('ftp.example.com')
ftp.login('user', 'pass')
voidfile = cStringIO.StringIO('')
ftp.storbinary('STOR emptyfile.foo', voidfile)
ftp.close()
voidfile.close()
为什么它会完成上传?它不应该永远上传吗?我不知道。我想它也应该这样。为什么它会完成上传?它不应该永远上传吗?我不知道。我想也应该这样。