从 python 中的打印输出创建字典
create dictionary from a print output in 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}
似乎 listdir_attr()
输出也取决于底层服务器实现。如果您已经有了可打印格式,您可以尝试按 \t
拆分值,可以使用最后拆分的值作为您的键,倒数第二个将是您的值。您还可以将数据加载到 pandas 数据框中,并可以直接使用列名访问所需的字段。
SFTPClient.listdir_attr
actually returns a list of SFTPAttrributes
个对象。您很可能可以访问上次修改的文件名和时间戳,如 attr.filename
和 attr.st_mtime
(您可能需要将其从时间戳转换为人类可读的日期)。不幸的是,这些对象似乎是根据 os.stat
的结果创建的,这些对象在不同操作系统中并不总是 return 相同。您应该试验您计划在其上使用该软件的所有系统类型。
做这样的事情
from time import gmtime, strftime
一定要导入这些
d = {}
for attr in sftp.listdir_attr('/abc'):
time_structer = gmtime(attr.st_mtime)
d[attr.filename] = strftime("%a, %d %b %Y %H:%M:%S", time_structer)
您可以执行以下操作
from collections import defaultdict
temp = defaultdict()
for file in sftp.listdir(PATH):
temp[file].append(sftp.lstat(file)[X]) # where X is the column you want for as your value
我有一个 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}
似乎 listdir_attr()
输出也取决于底层服务器实现。如果您已经有了可打印格式,您可以尝试按 \t
拆分值,可以使用最后拆分的值作为您的键,倒数第二个将是您的值。您还可以将数据加载到 pandas 数据框中,并可以直接使用列名访问所需的字段。
SFTPClient.listdir_attr
actually returns a list of SFTPAttrributes
个对象。您很可能可以访问上次修改的文件名和时间戳,如 attr.filename
和 attr.st_mtime
(您可能需要将其从时间戳转换为人类可读的日期)。不幸的是,这些对象似乎是根据 os.stat
的结果创建的,这些对象在不同操作系统中并不总是 return 相同。您应该试验您计划在其上使用该软件的所有系统类型。
做这样的事情
from time import gmtime, strftime
一定要导入这些
d = {}
for attr in sftp.listdir_attr('/abc'):
time_structer = gmtime(attr.st_mtime)
d[attr.filename] = strftime("%a, %d %b %Y %H:%M:%S", time_structer)
您可以执行以下操作
from collections import defaultdict
temp = defaultdict()
for file in sftp.listdir(PATH):
temp[file].append(sftp.lstat(file)[X]) # where X is the column you want for as your value