我正在尝试通过管道传递以下脚本的输出

#! /usr/bin/env python

import string
import os

status_cmd = 'herbstclient tag_status'
idle_cmd = 'herbstclient --idle'

def parse_tags(output):
    #Takes herbstclient tag_status and parses it
    #returns a nested list of tags.
    tags = output.split()
    taglist = ''
    for i in range(len(tags)):
        if tags[i][0] == '#':
            s = '^bg(' + colors[3] + ')' + tags[i][1:] + ' '
            taglist += s
        elif tags[i][0] == ':':
            taglist += '^bg(' + colors[4] + ')' + tags[i][1:] + ' '
    return taglist

def parse_xdef():
#Returns the colors in Xresources in a list
#in the order they appear in Xresources
    os.chdir('/home/damian/')
    fin = open('.Xresources')
    colors = []
    for line in fin:
        color = line.strip()
        if 'color' in color:
            rgb = color[color.find('#'):]
            colors.append(rgb)
        elif 'background' in color:
            colors.append(color[color.find('#'):])
        elif 'foreground' in color:
            colors.append(color[color.find('#'):])
    return(colors)

colors = parse_xdef()
single_line_out = ''
idlein = os.popen(idle_cmd)
#for line in idlein:

for line in idlein.readline()
    if 'tag' in line:
        proc = os.popen(status_cmd)
        output = proc.readline()
        taglist = parse_tags(output)
        single_line_out = taglist
        print(single_line_out)


通过dzen或bar,但不起作用。它是一个脚本,用于显示和更新Herbstcluent中的标签,并且可以在终端上独立运行:每当我更改选项卡时,它都会打印格式化为dzen的选项卡列表,但是每当我尝试将其通过管道传输到酒吧时,酒吧就会保持黑色。请帮忙。

最佳答案

对于那些迟到这里的人,我相信解决方案是刷新输出。

import sys
sys.stdout.flush()

关于python - 我如何获得我编写的此python面板以正确地将其传递给dzen?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27406152/

10-12 23:09