我无法弄清楚如何使用ftplib查看FTP站点的文件内容.
我可以使用WinSCP连接到FTP站点,并查看根目录中的6个文件.
在Python 3.4中,我使用以下代码:
from ftplib import FTP_TLS
ftps = FTP_TLS(timeout=100)
ftps.connect(ipAddress, 21)
ftps.auth()
ftps.prot_p()
ftps.login('username', 'password')
Run Code Online (Sandbox Code Playgroud)
哪个产生:
Out[72]: '230 User logged in.'
Run Code Online (Sandbox Code Playgroud)
我可以运行这个:
ftps.pwd()
Run Code Online (Sandbox Code Playgroud)
......我看到我在根目录中:
Out[73]: '/'
Run Code Online (Sandbox Code Playgroud)
一切似乎都很好吃.但是,当我试图查看目录中的内容,使用ftps.dir()或ftps.retrlines('NLST'),或者我尝试过的任何其他内容时,我得到一个超时:
TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
Run Code Online (Sandbox Code Playgroud)
我搜索过,发现有几个人说这可能是"被动与主动"连接设置问题.然而,我询问了FTP的管理员,如果它是被动的还是主动的,他表示不相信,只是说,"这不是SFTP.它是明确的FTP over TLS !!"
我对这一切都一无所知.我只是想使用ftplib(或任何其他包!)连接到他的FTP并下载一些文件.
我错过了什么?
编辑:我刚想通了WinSCP正在使用被动模式,所以这似乎是有效的.据我了解,默认情况下ftplib是被动的,但我继续将标志设置为true.这没什么,我仍然有同样的问题.
我还检查了我的防火墙(抓住吸管),它完全关闭,所以那里应该没有问题.
我还尝试使用'.sendcmd()'方法发送显式命令,该方法似乎能够发送命令,但不会获取任何响应(或者它无法查看响应).
有什么理由我能够看到我所在的目录,但没有其他任何数据?我显然已经连接并与服务器通信了,看起来这个目录可用并且对我来说是可见的,这意味着数据可以来回传递.数据是否可能以某种方式返回ftplib无法识别?有关我应该从哪里开始进行故障排除的任何想法?
最后,似乎所有内容都设置正确,因为我可以在WinSCP中看到一切正常.我应该检查哪些设置与ftplib进行比较?
编辑2:
根据要求,我设置了调试级别(感谢这个提示),下面是输出:
ftps = FTP_TLS(timeout=15)
ftps.set_debuglevel(2)
ftps.connect(ipAddress, 21)
ftps.set_pasv(True) …Run Code Online (Sandbox Code Playgroud) 我有这个字符串:
235072,testing,some252f4,14084-things224072,and,other2524,14084-thingies223552,testing,some/2wr24,14084-things
Run Code Online (Sandbox Code Playgroud)
我想用6位数字分割字符串.即 - 我想要这个:
235072,testing,some2wg2f4,wf484-things
224072,and,other25wg4,14-thingies
223552,testing,some/2wr24,14084-things
Run Code Online (Sandbox Code Playgroud)
我如何使用正则表达式执行此操作?以下不起作用(使用stringr包):
> blahblah <- "235072,testing,some252f4,14084-things224072,and,other2524,14084-thingies223552,testing,some/2wr24,14084-things"
> test <- str_split(blahblah, "([0-9]{6}.*)")
> test
[[1]]
[1] "" ""
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我有一个名为的类A,有两个子类B和C.以下是否有意义?或者有更好的方法吗?
class A():
...
def do_stuff(self):
self.do_this()
self.do_that()
if isInstance(self, B):
self.do_the_b_stuff()
elif isInstance(self, C):
self.do_the_c_stuff()
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用ADODB和VBA从另一个excel电子表格中获取一些数据.这是我第一次尝试使用ADODB,我为自己的无知道歉.
这样做可以从工作表中提取所有数据:
rst1.Open "SELECT * FROM [NAVAUM$A1:IU60000];", cnn1, adOpenStatic, adLockReadOnly
Run Code Online (Sandbox Code Playgroud)
这可以获取我想要的字段,但没有字段名称:
rst1.Open "SELECT F2,F3 FROM [NAVAUM$A2:IU60000] WHERE F1 = 'Return' AND F3 LIKE '" & SearchString & "';", cnn1, adOpenStatic, adLockReadOnly
Run Code Online (Sandbox Code Playgroud)
这不起作用
rst1.Open "SELECT F2,F3 FROM [NAVAUM$A1:IU60000] WHERE F1 = 'Return' AND F3 LIKE '" & SearchString & "';", cnn1, adOpenStatic, adLockReadOnly
Run Code Online (Sandbox Code Playgroud)
(不同之处在于包含第1行,其中字段名称为.)
应该注意的是,第2行都是空白的.(这是文件来我的方式,无法更改.)我该如何解决这个问题?
编辑:我知道了!
我没有更改查询以反映我实际上现在有字段名称的事实.因此,F2和F3成为[基金ID]和[基金名称].我不聪明.
谢谢你把螺丝松开StackOverflow !!