Python - 获取文件列表中的最后一行

时间:2015-06-18 07:48:42

标签: python

我有这段代码:

from ftplib import FTP
import operator
import os
import sys
import time
import glob
SimServer = '11.1.1.1' 
user = 'aaa'
passwd = 'bbb' 
simDir = '/path/to/dir' 
simFtp = FTP() 
print ("\n[INFO]: Connecting to FTP server:\n") 
print (simFtp.connect('11.1.1.1')) 
print ("\n[INFO]: login with user name and password\n") 
print (simFtp.login (user,passwd)) 
print ("\n[INFO]: Switching to the relevant directory\n") 
print (simFtp.cwd(simDir)) 
list = simFtp.retrlines('LIST') 
print ("bye")

我有一个变量(命名列表),其中包含来自ftp服务器的文件列表

drwxr-xr-x    3 10140    10140        4096 Apr 06 13:23 290
drwxr-xr-x    3 10140    10140        4096 Apr 06 22:26 290
drwxr-xr-x    3 10140    10140        4096 Apr 14 11:10 291
drwxr-xr-x    3 10140    10140        4096 Apr 27 21:50 292
drwxr-xr-x    3 10140    10140        4096 Apr 30 09:57 292
drwxr-xr-x    3 10140    10140        4096 May 03 09:17 293
drwxr-xr-x    3 10140    10140        4096 May 06 15:07 293
drwxr-xr-x    3 10140    10140        4096 May 14 15:25 294
drwxr-xr-x    3 10140    10140        4096 May 25 08:31 294
drwxr-xr-x    3 10140    10140        4096 May 25 07:26 294
drwxr-xr-x    3 10140    10140        4096 Jun 01 11:28 295
drwxr-xr-x    3 10140    10140        4096 Jun 02 12:31 320
drwxr-xr-x    3 10140    10140        4096 Jun 02 11:29 320
drwxr-xr-x    3 10140    10140        4096 Jun 04 15:22 320
drwxr-xr-x    3 10140    10140        4096 Jun 11 15:52 320
drwxr-xr-x    3 10140    10140        4096 Jun 15 11:41 321
drwxr-xr-x    3 10140    10140        4096 Jun 16 15:41 321 

列表会不时更改,我总是希望cd到最后一个目录,在这种情况下是321。

5 个答案:

答案 0 :(得分:3)

因为问题是 -

  

获取文件列表中的最后一行

如果你拥有的变量flist就像 -

["drwxr-xr-x    3 10140    10140        4096 Apr 06 13:23 290",
 "drwxr-xr-x    3 10140    10140        4096 Apr 06 22:26 290",
 "drwxr-xr-x    3 10140    10140        4096 Apr 14 11:10 291",
 "drwxr-xr-x    3 10140    10140        4096 Apr 27 21:50 292",
 "drwxr-xr-x    3 10140    10140        4096 Apr 30 09:57 292",
 "drwxr-xr-x    3 10140    10140        4096 May 03 09:17 293",
 ...]

然后,您可以将上面flist中的最后一个文件的文件名作为 -

flist[-1].split()[-1]
>> '321'

答案 1 :(得分:2)

从输入列表中提取路径

>>> file_list = ["drwxr-xr-x    3 10140    10140        4096 Apr 06 13:23 290",
... "drwxr-xr-x    3 10140    10140        4096 Apr 06 22:26 290",
... "drwxr-xr-x    3 10140    10140        4096 Apr 14 11:10 291",
... "drwxr-xr-x    3 10140    10140        4096 Apr 27 21:50 292",
... "drwxr-xr-x    3 10140    10140        4096 Apr 30 09:57 292",
... "drwxr-xr-x    3 10140    10140        4096 May 03 09:17 293",
... "drwxr-xr-x    3 10140    10140        4096 May 06 15:07 293",
... "drwxr-xr-x    3 10140    10140        4096 May 14 15:25 294",
... "drwxr-xr-x    3 10140    10140        4096 May 25 08:31 294",
... "drwxr-xr-x    3 10140    10140        4096 May 25 07:26 294",
... "drwxr-xr-x    3 10140    10140        4096 Jun 01 11:28 295",
... "drwxr-xr-x    3 10140    10140        4096 Jun 02 12:31 320",
... "drwxr-xr-x    3 10140    10140        4096 Jun 02 11:29 320",
... "drwxr-xr-x    3 10140    10140        4096 Jun 04 15:22 320",
... "drwxr-xr-x    3 10140    10140        4096 Jun 11 15:52 320",
... "drwxr-xr-x    3 10140    10140        4096 Jun 15 11:41 321",
... "drwxr-xr-x    3 10140    10140        4096 Jun 16 15:41 321 "]
>>> filename = file_list[-1].split()[-1]
>>> filename
'321'

答案 2 :(得分:2)

Python新手?你会欣赏它让你索引到列表的方式:负面索引只是环绕在后面。

>>> a = [1, 2, 3]
>>> a[-1]
3
>>> a[1:-1]
[3, 1]

在这种情况下,您可能需要将目录列表拆分为行(除非您可以以更短的格式获取目录列表,例如ls | tail -n 1):

lines = flist.splitlines()
lastline = lines[-1]
lastdir = lastline.split()[-1]

答案 3 :(得分:0)

如果文件夹的名称是文件名,您可以cd到ftp服务器的文件夹中:

>>> ftp.cwd('filename')

如果ftp是

from ftplib import FTP
>>> ftp = FTP('ftp.server')

答案 4 :(得分:0)

好吧,你可以在远程机器上部署你的python代码,然后你可以使用os.chdir()来改变dir。或者您可以在定位机器上部署代码并使用python库:Paramiko来控制远程机器,您可以在此页面中找到一些想法:http://docs.paramiko.org/en/1.15/api/sftp.html

但这两种方法都使用file_list [-1] .split()[ - 1]来获取最后一行