在我的网络上,计划的报告每次运行时都会创建一个新的目录(随机数(,然后将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")