使用ftplib下载文件名中带有空格的文件

晶体管

我正在从C-More工业HMI FTP服务器下载两个文件。我不知道HMI正在运行什么操作系统,但是我怀疑它的FTP服务器存在一些问题。使用Jython 2.7,可以轻松读取一个文件,但另一个文件名中有空格,并且常规的引号括住解决方案仍然无法使用。

以下内容在Windows 10 FTP客户端中有效。

ftp> get NO_SPACES.csv
200 PORT command successful.
150 Opening ASCII mode data connection for NO_SPACES.csv.
226 Transfer complete.
ftp: 12774 bytes received in 0.27Seconds 47.66Kbytes/sec.

ftp> get "WITH SPACE.csv"
200 PORT command successful.
150 Opening ASCII mode data connection for WITH SPACE.csv.
226 Transfer complete.
ftp: 6328 bytes received in 0.02Seconds 316.40Kbytes/sec.

到现在为止还挺好。现在在Python中尝试:

ftp = FTP(myIP)                         # Connect.
ftp.login(userName, password)           # Login.
ftp.set_pasv(False)                     # Required by the C-More panel for some reason.
with io.BytesIO() as binary_buffer:
    # read all of products into a binary buffer
#   ftp.retrbinary("RETR NO_SPACES.csv", binary_buffer.write)       # This line works.
    ftp.retrbinary('RETR "WITH SPACE.csv"', binary_buffer.write)    # This one doesn't.

我的开发系统中的脚本控制台报告:

ftplib.error_perm:550“ WITH SPACE.csv”:未执行请求的操作。

  1. 文件名已更改,以保护无辜者。
  2. Windows FTP喜欢该get命令。Python似乎很喜欢RETR
  3. 我试过'RETR "WITH SPACE.csv"'"RETR 'WITH SPACE.csv'"结果相同。
  4. 如果必须的话,我可以在HMI中重命名文件,但这需要进行一些验证和文书工作,这很无聊。
  5. 我正在使用最新版本的感应自动化点火技术进行开发!使用Jython 2.7的SCADA系统。

有人有任何想法让我尝试吗?

马丁·普里克里(Martin Prikryl)

ftplib的空格没有问题。问题是您添加到RETR命令中的引号不应有引号:

ftp.retrbinary('RETR WITH SPACE.csv', binary_buffer.write)

如果在ftp使用-d开关的情况下启用了调试模式,您将看到它在RETR命令中也没有向引号服务器发送引号

ftp> get "WITH SPACE.csv"
---> PORT 127,0,0,1,15,145
200 Port command successful
---> RETR WITH SPACE.csv
150 Opening data channel for file download from server of "/WITH SPACE.csv"
226 Successfully transferred "/WITH SPACE.csv"
ftp: 12 bytes received in 0.00Seconds 12000.00Kbytes/sec.

请注意,get是命令行ftp客户端用户命令,可转换为FTP协议 RETR命令。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

文件名中带有空格的可绘制对象?

来自分类Dev

Firefox在文件名中带有空格的下载时出现问题

来自分类Dev

使用find命令在shell中打印带有空格的完整文件名

来自分类Dev

文件名中带有空格的grep文件

来自分类Dev

查找和xargs正确处理名称中带有空格的文件名

来自分类Dev

PHP Force下载带有空格的文件名

来自分类Dev

链接到Bitbucket Markdown中带有空格的文件名

来自分类Dev

在CMD行上卷曲GET,文件名中带有空格

来自分类Dev

使用GNU Make处理带有空格的文件名

来自分类Dev

批处理文件,文本文件中的变量/文件名中带有空格

来自分类Dev

在Python ftplib中的上载文件名中使用变量

来自分类Dev

检查远程计算机上是否存在文件名和/或路径中带有空格的文件

来自分类Dev

文件名中带有空格的可绘制对象?

来自分类Dev

Python scp复制文件,文件名中带有空格

来自分类Dev

处理文件名中带有空格的文件列表

来自分类Dev

在文件名中带有空格的GetFiles

来自分类Dev

htaccess文件名带有空格

来自分类Dev

在回声内的perl命令中带有空格的文件名

来自分类Dev

对带有空格的文件名使用makefile通配符命令

来自分类Dev

使用GNU Make处理带有空格的文件名

来自分类Dev

ffmpeg:bash脚本中带有空格的文件名

来自分类Dev

转义文件名带有空格的转义变量

来自分类Dev

使用awk提取带有空格的文件名

来自分类Dev

批量下载文件名中带有日期的文件

来自分类Dev

批量修改多个文件名中带有空格的文件

来自分类Dev

我如何在 linux 脚本中使用带有空格的文件名?

来自分类Dev

带有空格的文件名的 rsync 排除选项

来自分类Dev

无法引用文件名中带有空格的块 blob

来自分类Dev

在shell中处理带有空格的文件名

Related 相关文章

  1. 1

    文件名中带有空格的可绘制对象?

  2. 2

    Firefox在文件名中带有空格的下载时出现问题

  3. 3

    使用find命令在shell中打印带有空格的完整文件名

  4. 4

    文件名中带有空格的grep文件

  5. 5

    查找和xargs正确处理名称中带有空格的文件名

  6. 6

    PHP Force下载带有空格的文件名

  7. 7

    链接到Bitbucket Markdown中带有空格的文件名

  8. 8

    在CMD行上卷曲GET,文件名中带有空格

  9. 9

    使用GNU Make处理带有空格的文件名

  10. 10

    批处理文件,文本文件中的变量/文件名中带有空格

  11. 11

    在Python ftplib中的上载文件名中使用变量

  12. 12

    检查远程计算机上是否存在文件名和/或路径中带有空格的文件

  13. 13

    文件名中带有空格的可绘制对象?

  14. 14

    Python scp复制文件,文件名中带有空格

  15. 15

    处理文件名中带有空格的文件列表

  16. 16

    在文件名中带有空格的GetFiles

  17. 17

    htaccess文件名带有空格

  18. 18

    在回声内的perl命令中带有空格的文件名

  19. 19

    对带有空格的文件名使用makefile通配符命令

  20. 20

    使用GNU Make处理带有空格的文件名

  21. 21

    ffmpeg:bash脚本中带有空格的文件名

  22. 22

    转义文件名带有空格的转义变量

  23. 23

    使用awk提取带有空格的文件名

  24. 24

    批量下载文件名中带有日期的文件

  25. 25

    批量修改多个文件名中带有空格的文件

  26. 26

    我如何在 linux 脚本中使用带有空格的文件名?

  27. 27

    带有空格的文件名的 rsync 排除选项

  28. 28

    无法引用文件名中带有空格的块 blob

  29. 29

    在shell中处理带有空格的文件名

热门标签

归档