我有这段代码:
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。
答案 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]来获取最后一行