Pysftp。根据修改日期获取文件

时间:2017-08-02 21:16:35

标签: python python-3.x pysftp

如果修改日期少于24小时,我正在尝试编写一个脚本来从SFTP服务器检索文件。 这是我到目前为止的尝试:

cnopts = sftp.CnOpts()
cnopts.hostkeys = None
s = sftp.Connection(host=host, username=username, password=password, port=port, cnopts=cnopts)
s.cwd(r"/Outbox")
for attr in s.listdir_attr("ENTOUT_709_Payers_20170802024203.csv"):
    print(attr)

以下是结果......

?rw-rw-rw- 1 0 0 8339 02 Aug 02:42 ENTOUT_709_Payers_20170802024203.csv

如何以"02 Aug 02:42"

的格式检索%Y%M%d?

2 个答案:

答案 0 :(得分:1)

我可以替代它:

def unix2human(unixtime, fmt = "%Y-%m-%d"):
    try:
        return datetime.utcfromtimestamp(int(unixtime)).strftime(fmt)
    except Exception as e:
        log.warning("Failed to convert unixtime string '{}' :: {}".format(unixtime, e))
        return None

因此您的代码将如下所示:

for attr in s.listdir_attr("ENTOUT_709_Payers_20170802024203.csv"):
    print(unix2human(attr.st_mtime))

其中 st_mtime 是内置的pysftp方法

答案 1 :(得分:0)

您可以解析从ftp目录列表中返回的日期字符串,如下所示:

import datetime
input_date = "02 Aug 02:42"
parsed_date = datetime.datetime.strptime(input_date,"%d %b %H:%M").replace(year=2017)
print(f"{parsed_date:%Y%m%d}")

输出为20170802