- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 Debian 机器上安装了 vsFTP。使用ftp命令手动上传文件时,没问题。即,以下 session 有效:
john@myhost:~$ ftp xxx.xxx.xxx.xxx 5111Connected to xxx.xxx.xxx.xxx.220 Hello,Welcom to my FTP server.Name (xxx.xxx.xxx.xxx:john): ftpuser331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> put st.ziplocal: st.zip remote: st.zip200 PORT command successful. Consider using PASV.150 Ok to send data.226 File receive OK.12773 bytes sent in 0.00 secs (277191.8 kB/s)ftp> 221 Goodbye.
(请注意,如上所述,出于某种原因,我将 vsFTP 服务器配置为使用非默认端口,例如 5111)
现在,当我用 python 编写脚本以编程方式上传文件时,它失败了。错误显示“超时”,如以下 session 所示:
john@myhost:~$ ipythonPython 2.5.2 (r252:60911, Jan 24 2010, 14:53:14) Type "copyright", "credits" or "license" for more information.IPython 0.8.4 -- An enhanced Interactive Python.? -> Introduction and overview of IPython's features.%quickref -> Quick reference.help -> Python's own help system.object? -> Details about 'object'. ?object also works, ?? prints more.In [1]: import ftplibIn [2]: ftp=ftplib.FTP() In [3]: ftp.connect('xxx.xxx.xxx.xxx','5111') Out[3]: "220 Hello,Welcom to my FTP server."In [4]: ftp.login('ftpuser','ftpuser') Out[4]: '230 Login successful.'In [5]: f=open('st.zip','rb') In [6]: ftp.storbinary('STOR %s' % 'my_ftp_file.zip', f) ---------------------------------------------------------------------------error Traceback (most recent call last).../usr/lib/python2.5/ftplib.pyc in ntransfercmd(self, cmd, rest) 322 af, socktype, proto, canon, sa = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM)[0] 323 conn = socket.socket(af, socktype, proto)--> 324 conn.connect(sa) 325 if rest is not None: 326 self.sendcmd("REST %s" % rest)/usr/lib/python2.5/socket.pyc in connect(self, *args)error: (110, 'Connection timed out')
我猜我的 vsFTP 服务器配置有误,但无法解决。任何人都可以帮忙吗?
我的 vsFTP 配置是:
listen=YESconnect_from_port_20=YESlisten_port=5111ftp_data_port=5110# Passive FTP mode allowedpasv_enable=YESpasv_min_port=5300pasv_max_port=5400max_per_ip=2
最佳答案
在您尝试发送数据之前不会发生超时,因此您能够成功连接到服务器。我看到的唯一区别是 ftplib 默认使用被动模式,而您的命令行客户端似乎没有。尝试做
ftp.set_pasv(False)
在开始传输之前看看会发生什么。
请注意,非被动模式基本上已过时,因为它不能跨 NAT 防火墙使用,因此您可能应该配置 vsFTP 以允许被动模式。
关于python - FTP 上传文件手动工作,但使用 Python ftplib 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3349722/
我想知道是否有人观察到使用 Python 的 ftplib 通过 ftp 下载或上传文件所花费的时间与通过 Windows 命令提示符或使用 Perl 执行 FTP get/put 相比非常长Net:
我正在使用 ftplib 在 Python 中下载文件,直到最近一切似乎都运行良好。我正在下载这样的文件: ftpSession = ftplib.FTP(host,username,password
通过 FTP 访问远程服务器时出现以下错误。不确定它有什么问题,所以我可以解决。任何线索都会有所帮助。 代码: import ftplib from ftplib import FTP ftp = f
我有一些远程文件: ___________ [somevar] Test: 2 ___________ 例如,我想将 var "Test"更改为 3,这样我将拥有: ___________ [some
我正在尝试使用 ftplib 在服务器上放置一个文件,但我遇到了一些我不知道如何处理的错误。登录有效,但尝试上传文件输出错误。这是我正在使用的代码: import ftplib import os d
我正在用 Python 编写测试工具,作为测试的一部分,我需要初始化 FTP 服务器并上传各种文件。我正在使用 ftplib,一切正常。我遇到的唯一问题是我在控制台窗口中看到大量 FTP 文本与我的测
当我从 iPython 0.13 运行这段代码时: import ftplib f=ftplib.FTP('ftp://ftp.ncbi.nih.gov/genomes/Bacteria/') 我收到
我知道如何设置下载这样的文件,但大多数文件都没有命名为 file-LATEST。我怎样才能下载最新的文件? 通过: 修改日期 时间戳 if version.current < version.new
手册说 To download a file, use ftp.retrlines('RETR ' + filename) 这是我的做法: ftp.retrbinary('RETR media/bac
这个问题已经有答案了: Cannot list FTP directory using ftplib – but FTP client works (1 个回答) 已关闭 4 年前。 我正在使用 py
我有一个 python 程序,它基本上只是在远程 FTP 服务器和本地计算机之间移动文件。我有一些代码可以删除 FTP 站点上的文件,类似于 try: ftplib_obj.delete(so
尝试使用 ftplib 连接到 ftp 服务器时,我遇到了一些非常奇怪的行为。我正在做的是: import ftplib ftp = ftplib.FTP('my-ftp-server') ftp.l
我用谷歌搜索,但我只能找到如何上传一个文件...我正在尝试将所有文件从本地目录上传到远程 ftp 目录。有什么想法可以实现吗? 最佳答案 用循环? 编辑:在一般情况下,仅上传文件将如下所示: im
我已经搜索了几天,但还没有找到答案。 我尝试从 FTP 下载视频文件,我的脚本检查服务器,将 nlist() 与从文本文件解析的已下载文件列表进行比较,然后创建一个新的文件列表以获取并迭代它下载每个文
我正在使用 ftplib 传输文件。一切都很好。现在我试图在下载之前获取目标文件的大小。 首先,我尝试使用 ftp.size(filename) 获取大小。服务器提示我不能在 ascii 模式下执行此
我正在尝试使用 ftplib 获取文件列表并下载自上次检查以来的任何新文件。到目前为止我尝试运行的代码是: #!/usr/bin/env python from ftplib import FTP i
如何使用 ftplib 检查远程 ftp 上的文件是否为文件夹? 我现在最好的方法是做一个 nlst,并在每个文件上迭代调用大小,如果文件出错那么它是一个文件夹? 有没有更好的方法?我无法解析列表的输
我想用 Python 的 ftplib 客户端指定端口(而不是默认端口 21)。 代码如下: from ftplib import FTP ftp = FTP('localhost') # conne
我的 Centos 服务器上有 pyftpdlib 0.7.0,我在客户端上使用 ftplib 当我尝试运行此命令时,我收到此错误 客户端操作系统:Windows 7 python V:2.7 服务器
我正在尝试从ftplib.all_errors中提取有用的错误消息,正在捕获550 /dir.: No such file or directory,但我想隔离出它是错误的文件还是错误的目录。到目前为
我是一名优秀的程序员,十分优秀!