繁体   English   中英

从subprocess.Popen命令格式化文本

[英]Formatting text from a subprocess.Popen command

我正在尝试运行子过程命令,并希望格式化输出以仅显示Unix纪元时间戳和创建时间(最好将人类可读的时间从24小时转换为12小时)。 我已经在网上搜索了几个小时,却没有找到我想要的东西。 (子过程命令中的变量(pool,agent,rmpool)与问题无关)

epoch = subprocess.Popen("zfs list -t snapshot -r " + pool + agent +
                         " -o name,creation | " + rmpool + " | grep -v NAME",
                         stdout=subprocess.PIPE, shell=True)
snap, err = epoch.communicate()
snap = str(snap)
snap = snap.split(' ')
stamp = snap[0]
snaptime = snap[4]
print "\nEpoch\t\tTime"
print stamp, '\t', snaptime

它只返回与此

时代时间

1370217684 20:01

我需要它返回:

时代时间

1370217684 20:01

1370822507 20:01

1371427274 20:01

1371859278 20:01

1371945679 20:01

1372032076 20:01

1372118478 20:01

1372204879 20:01

1372291282 20:01

看来您需要遍历snap.split(' ')所有值:

snap, err = epoch.communicate()
print "\nEpoch\t\tTime"
for stamp,_,_,_,snaptime,_ in zip(*[iter(snap.split(' '))]*6):
    print('{}\t{}'.format(stamp, snaptime))

上面使用zip(*[iter(s)]*n)分组程序惯用法将数据聚类为n长度的组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM