Skip to main content
 首页 » 编程设计

python之使用伪文件将空文件上传到ftp

2025年05月04日18emanlee

据我所知,用 ftp 创建一个空文件是不可能的,您必须在本地驱动器上创建一个空文件,上传它,然后在完成后将其删除。我想知道是否可以这样做:

class FakeFile: 
    def read(self): 
        return '\x04' 
 
ftpinstance.storbinary('stor fe', FakeFile()) 

我认为这可能有效,因为 storbinary 的文档说它接受一个带有“read”方法的对象并调用它直到它返回 EOF,而\x04 是 ASCII EOF 字符。不过我已经试过了,文件最终在服务器上是一个随机的千字节数。我是不是误会了什么?

请您参考如下方法:

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