Python 从subprocess.Popen命令格式化文本
我试图运行一个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:01Python 从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
看起来您需要遍历
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))