从DateTime列表中的元组中查找最新目录



在我的网络上,计划的报告每次运行时都会创建一个新的目录(随机数(,然后将CSV文件放在其中。我当前使用 pysmbclient 在SMB上获取文件,但是我不确定如何通过模块glob返回的内容导航到此报告最新目录(下(。

如何到达最后一个创建的目录,我需要解析 dateTime.dateTime 的第一个以某种方式吗?这是我所拥有的:

import smbclient
import glob
import os
smb = smbclient.SambaClient(server=uk51, ip=10.10.10.10, share="share", 
      username="test", password="password", domain='office')
# recent = smb.glob(max(glob.iglob(\*)), key=os.path.getctime)) # Latest directory
# smb.download(recent + "summary.csv", "/usr/reports/uk51.csv")) # Download latest dir's CSV

example = smb.glob('\*')
print list(example) # Example of what Glob returns

#> python script.py

#> [(U'1192957',u'd',0,dateTime.dateTime(2017,4,23,10,29,29,20((,(u'1193044',u'd',0,dateTime.dateTime(2017,4,24,10,29,22((]

这些4个tupers是Pysmbclient从smb.glob()返回数据的方式。您不需要解析数据,因为它们已经是datetime.datetime对象,可以按照通常的排序进行排序。要在每个4核心中获得最终(第三(值,您可以使用operator.itemgetter

import operator as op
#example = [(u'1193044', u'D', 0, datetime.datetime(2017, 4, 24, 10, 29, 22)), 
#           (u'1192957', u'D', 0, datetime.datetime(2017, 4, 23, 10, 29, 20))]
example = list(smb.glob('\*'))
example.sort(key=op.itemgetter(3),reverse=True)
most_recent_dir = example[0][0] # to get the most recent directory name

然后,您将使用os.path.join来建立下载的路径:

import os
smb.download(os.path.join(most_recent_dir,"summary.csv"), "/usr/reports/uk51.csv")

最新更新