Python 从subprocess.Popen命令格式化文本

Python 从subprocess.Popen命令格式化文本,python,subprocess,output,Python,Subprocess,Output,我试图运行一个subprocess命令,并希望格式化输出,以便只显示Unix历元时间戳和创建时间(最好将人类可读的时间从24小时时间转换为12小时时间戳)。我已经在网上搜索了几个小时,还没有找到我要找的东西。(subprocess命令中的变量(pool、agent、rmpool)与问题无关) 它只会带着这个返回 大纪元 1370217684 20:01 我需要它与此一起返回: 大纪元 1370217684 20:01 1370822507 20:01 1371427274 20:01 13718

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

它只会带着这个返回

大纪元

1370217684 20:01

我需要它与此一起返回:

大纪元

1370217684 20:01

1370822507 20:01

1371427274 20:01

1371859278 20:01

1371945679 20:01

137203207620:01

1372118478 20:01

1372204879 20:01

1372291282 20:01


看起来您需要遍历
snap.split(“”)
中的所有值:


上面使用
zip(*[iter(s)]*n)
将数据聚类为
n
-长度组。

对于stamp,,,,,,snaptime=zip(*[iter(snap.split(“”))]*5):^SyntaxError:无效的syntaxoop,是。这个等号应该是中的
。在将“=”改为“in”后,它更符合我的要求。唯一的一件事是在单独的行上打印出年份,如果您可以在问题中添加一个以
snap
变量结尾的原始文本格式示例,这将非常有用。@martineau这里是snap变量显示的内容:1370217684 Sun Jun 2 20:01 2013 1370822507 Sun Jun 9 20:01 2013介于“2013”和“1370822507”之间应该是行分隔。
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
snap, err = epoch.communicate()
print "\nEpoch\t\tTime"
for stamp,_,_,_,snaptime,_ in zip(*[iter(snap.split(' '))]*6):
    print('{}\t{}'.format(stamp, snaptime))