使用psuedofi将空文件上载到ftp

2024-10-01 19:16:46 发布

您现在位置:Python中文网/ 问答频道 /正文

据我所知,用ftp创建一个空文件是不可能的,你必须在本地驱动器上创建一个空文件,上传它,然后在完成后删除它。我想知道是否可以做一些类似的事情:

class FakeFile:
    def read(self):
        return '\x04'

ftpinstance.storbinary('stor fe', FakeFile())

我认为这可能是可行的,因为storbinary的文档说它接受一个方法为'read'的对象并调用它直到它返回EOF,\x04是ASCII EOF字符。不过,我已经尝试过了,文件在服务器上的大小是随机的千字节数。我误解什么了吗?在


Tags: 文件selfreadreturndefftp事情class
3条回答

实际上,文件上写着“读到EOF为止”。我通过使read函数返回一个空字符串来解决这个问题。在

无需实现自己的类文件,只需使用内置模块StringIO(或python3中的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()

在现代用法中,文件结尾不是ascii4。这是XMODEM和电传打字机时代过时的用法。试试这个:

class FakeFile:
    def read(self, size=0):
        return ''

因为空读是EOF。在

使用当前代码,您应该得到一个完全由'\x04'字符组成的随机长度文件。这是因为它在读取时似乎总是有数据。^_-在

相关问题 更多 >

    热门问题