1

如果修改日期少于 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?

4

2 回答 2

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 方法

于 2019-08-12T14:34:54.227 回答
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

于 2017-08-02T22:56:30.267 回答