首页 > 解决方案 > 从python中的打印输出创建字典

问题描述

我有一个 for 循环,在其中我打印循环中的每个迭代并给出格式为 ls-lrt 的输出。我想从中创建一个字典,其中键作为文件名,值作为时间戳。

for attr in sftp.listdir_attr('/abc'):
...     print attr
...
-rwxr-xr-x   1 7202711  7201853      5759 01 Mar 12:49 .nfs0000000615c569f500000004
-rw-r--r--   1 7202711  7201853     62394 26 Sep 2017  1.java
-rwxr-xr-x   1 7202711  7201853      5009 20 Aug 2017  a.sh
-rwxr-xr-x   1 7202711  7201853      2201 15 Oct 2017  adt.sh
drwxr-xr-x   1 7202711  7201853       282 09 Jun 2017  backup
-rwxr-xr-x   1 7202711  7201853      1384 27 Jul 2017  ob.sh

如果我做一个

type(attr)

它给了我

<class 'paramiko.sftp_attr.SFTPAttributes'>

所以dict应该是这样的(日期时间格式需要标准化)

{'.nfs0000000615c569f500000004':'01 Mar 12:49',
                                  '1.java':'26 Sep 2017',..............etc}

标签: pythonpython-2.7paramiko

解决方案


SFTPClient.listdir_attr实际上返回一个SFTPAttrributes对象列表。您可能可以访问上次修改的文件名和时间戳,attr.filename以及attr.st_mtime(您可能需要将其从时间戳转换为人类可读的日期)。不幸的是,这些对象似乎是基于 的结果创建的os.stat,它们并不总是在操作系统之间返回相同的东西。您应该对计划使用此软件的所有系统类型进行试验。


推荐阅读