【问题标题】:Uploading files using ftplib in python在 python 中使用 ftplib 上传文件
【发布时间】:2019-02-12 05:36:41
【问题描述】:

使用“ftplib”Python 包,我连接到主机,然后使用“storbinary: 函数将二进制文件发送到该目录。但是,文件传输没有发生,源文件被覆盖并生成0 字节

在上传文件之前尝试在 ftplib 中使用“cwd”更改到目标目录。 在命令行上尝试了“rsync”,它工作正常(从而建立文件完整性)。

print ('Establishing FTP connection')
ftp = FTP(dest_dir, 'user', 'password')
print '+++++', ftp.pwd()   
ftp.cwd(dest_dir)
print 'work dir now', ftp.pwd() 
ftp.retrlines('LIST') 
f_name = /home/test/file_to_upload
with open(f_name, 'rb') as cfile:
    ftp.storbinary('STOR %s' % f_name, cfile)
ftp.quit()

文件:/home/test/file_to_upload 应该上传到 dest_dir,而不是被覆盖并变成一个空文件,即文件内容被删除

【问题讨论】:

  • 我不确定,但是您使用 f_name = /home/test/file_to_upload 调用 storbinary,这是一个不是有效文件名的路径。也许尝试硬编码 storbinary 中的文件名以首先检查?
  • 你所说的“源文件”是什么意思?是本地系统中的文件还是ftp上的远程文件?
  • f_name 是单个文件或文件列表。你能用单个文件试试吗
  • 还有一件事,你将文件存储到 binary_mode 是否可以存储到二进制模式
  • @Tempo810 源文件在我的本地系统中。此外,硬编码文件名不起作用。

标签: python ftplib


【解决方案1】:

f_name 包含本地系统的目录。尝试仅提取文件名。还要小心在“STOR”和“文件名”之间添加空格

示例:

ftp.storbinary('STOR '+ os.path.basename(f_name), open(f_name, 'rb'))

【讨论】:

    猜你喜欢
    • 2022-01-02
    • 2011-02-24
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多