import ftplib
import re
import string
ftp = ftplib.FTP('') # For access FTP link.
ftp.login ("")
ftpdir = ftp.cwd('')
data=[]
ftp.dir(data.append)
for line in data:
string.find("DIR","data")
if "DIR" in line:
print line
使用此代码,我获得了FTP服务器中存在的DIR名称列表,现在我如何找到列表中最后一个的DIR。
我的输出是:
12-09-11 10:04PM <DIR> mcl_201147_hw79u_05
12-08-11 01:19AM <DIR> mcl_201148_hw79u_02
12-16-11 12:53PM <DIR> mcl_201149_hw79u_07
12-25-11 12:11AM <DIR> mcl_201150_hw79u_05
01-07-12 12:00AM <DIR> mcl_201151_hw79u_04
01-07-12 11:37PM <DIR> mcl_201152_hw79u_05
01-17-12 01:06AM <DIR> mcl_201201_hw79u_04
01-29-12 12:52AM <DIR> mcl_201202_hw79u_04
02-04-12 01:06AM <DIR> mcl_201203_hw79u_03
02-11-12 01:28AM <DIR> mcl_201204_hw79u_05
02-17-12 01:12AM <DIR> mcl_201205_hw79u_05
02-19-12 01:22AM <DIR> mcl_201206_hw79u_05
03-02-12 02:24AM <DIR> mcl_201207_hw79u_05
03-04-12 02:01AM <DIR> mcl_201208_hw79u_05
03-05-12 12:25PM <DIR> mcl_201209_hw79u_06
我想在列表中找到最后一个DIR(03-05-12 12:25 PM mcl_201209_hw79u_06)
答案 0 :(得分:1)
如果这是一个列表,你可以这样做
try:
return data[-1]
except IndexError as e:
return e
// in your code you can just print "e" and you can continue like this...
// version two demonstrate why try, except is useful
def getdir(data):
try:
data[-1]
except IndexError as e:
return e
....
print getdir(data)
print 1+1
假设索引列表有问题,程序将不会停止:
list index out of range
2
这是你想要的吗?
为了有用,您应该使用记录器来跟踪e
(错误消息),而是返回一个默认值(如None
),这样您就知道有什么错误/没有目录存在。
我不确定在这里使用string
模块是什么。如果它只是在列表中找到我需要的东西,我很少使用该模块。
请给我这些说明并编辑您的原始帖子。
print line
print data
dir
是什么?在回答我的问题时,你可能会想出如何解决它。
感谢。
好。所以我假设每一行都是表格的记录:
12-09-11 10:04PM <DIR> mcl_201147_hw79u_05
假设您没有办法让time
,<DIR>
和dir-name
分开,您可以这样做
mystring = "12-09-11 10:04PM <DIR> mcl_201147_hw79u_05"
dirname = mystring.split(" ")[-1]
// ['12-09-11', '', '10:04PM', '', '', '', '', '', '', '<DIR>', '', '', '', '', '', '', '', '', '', 'mcl_201147_hw79u_05']
// and [-1] indicates the last element in the list (in reverse order)
您也可以首先尝试' '.join(mystring.split())
,然后应用split()
(不带任何参数),但我认为立即执行split
比第一种方法更容易,内存效率更高只会创建一个列表,替代方法将创建两个列表。
如果lines
尚未str
类型,请尝试查看str(line)
是否有帮助。
如果您需要找到所有dirname
,请google list comprehension
。它被认为比循环更有效。它是一种简洁的方式来编写您将要实现的目标......当然,根据您的要求进行适当的剥离。
答案 1 :(得分:0)
import ftplib # For access FTP module
ftp = ftplib.FTP('') # For access FTP link
ftp.login ('')
ftpdir = ftp.cwd('Working Directory')
list = []
ftp.dir(list.append) # append all the ftp files in list
temp = [] # Temp list
for item in list:
if item.find('DIR') != -1:
temp.append(item)
a = 0
for item in temp:
a = a + 1
print temp[-1]
最后我能够在上面的代码的帮助下解决我的问题,我们能够过滤所有目录的列表,之后我们就能找到最后一个目录。感谢所有人的帮助。