我怎样才能找到最后出现在lis中的DIR

2024-09-29 01:23:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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服务器中存在的目录名列表,现在我可以找到列表中最后一个目录。你知道吗

我的输出是:

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

我想找到列表中的最后一个目录(03-05-12 12 12:25PM mcl\u 201209\u hw79u\u 06)


Tags: inimportre目录列表fordatastring
2条回答
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]

最后,我能够解决我的问题与上述代码的帮助下,我们能够过滤所有目录的列表,然后我们能够找到目录位于最后。谢谢大家的帮助。你知道吗

如果这是一个列表,你就这样做

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

这就是你想要的吗?你知道吗


为了有用,您应该使用logger来跟踪e(错误消息),而是返回一个默认值(如None),这样您就知道有什么地方出错了/不存在目录。你知道吗

我不知道这里的string模块有什么用。如果只是在列表中找到我需要的东西,我很少使用这个模块。你知道吗


请给我这些描述和编辑您原来的职位。你知道吗

  1. 给我print line的结果
  2. 给我print data的结果
  3. 你想要什么?你知道吗

在回答我的问题时,你也许能想出解决的办法。你知道吗

谢谢。你知道吗


好吧。所以我假设每一行都是表格的记录:

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,请用谷歌list comprehension。它被认为比循环更有效。这是一个简洁的方式写下你要达到的目标。。。当然,要根据你的要求进行适当的剥离。你知道吗

相关问题 更多 >