diff options
| author | Georg Brandl <georg@python.org> | 2009-10-11 14:27:51 +0000 | 
|---|---|---|
| committer | Georg Brandl <georg@python.org> | 2009-10-11 14:27:51 +0000 | 
| commit | ec8aab6e4c992d155ba389e5574842c43a323b0e (patch) | |
| tree | e0deadc453a76933c7ddbc2867368644f9ec49b2 /Demo/scripts/lpwatch.py | |
| parent | 0e4a63993b4256b419ddb8d3d05cc29fccd15e62 (diff) | |
| download | cpython-git-ec8aab6e4c992d155ba389e5574842c43a323b0e.tar.gz | |
Merged revisions 75354 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r75354 | georg.brandl | 2009-10-11 16:23:49 +0200 (So, 11 Okt 2009) | 1 line
  Update lpwatch script.
........
Diffstat (limited to 'Demo/scripts/lpwatch.py')
| -rwxr-xr-x | Demo/scripts/lpwatch.py | 84 | 
1 files changed, 38 insertions, 46 deletions
diff --git a/Demo/scripts/lpwatch.py b/Demo/scripts/lpwatch.py index 262e562ea9..90b3ecf0ed 100755 --- a/Demo/scripts/lpwatch.py +++ b/Demo/scripts/lpwatch.py @@ -3,10 +3,9 @@  # Watch line printer queue(s).  # Intended for BSD 4.3 lpq. -import posix +import os  import sys  import time -import string  DEF_PRINTER = 'psc'  DEF_DELAY = 10 @@ -14,94 +13,87 @@ DEF_DELAY = 10  def main():      delay = DEF_DELAY # XXX Use getopt() later      try: -        thisuser = posix.environ['LOGNAME'] +        thisuser = os.environ['LOGNAME']      except: -        thisuser = posix.environ['USER'] +        thisuser = os.environ['USER']      printers = sys.argv[1:]      if printers:          # Strip '-P' from printer names just in case          # the user specified it... -        for i in range(len(printers)): -            if printers[i][:2] == '-P': -                printers[i] = printers[i][2:] +        for i, name in enumerate(printers): +            if name[:2] == '-P': +                printers[i] = name[2:]      else: -        if 'PRINTER' in posix.environ: -            printers = [posix.environ['PRINTER']] +        if 'PRINTER' in os.environ: +            printers = [os.environ['PRINTER']]          else:              printers = [DEF_PRINTER] -    # -    clearhome = posix.popen('clear', 'r').read() -    # -    while 1: + +    clearhome = os.popen('clear', 'r').read() + +    while True:          text = clearhome          for name in printers: -            text = text + makestatus(name, thisuser) + '\n' +            text += makestatus(name, thisuser) + '\n'          print(text)          time.sleep(delay)  def makestatus(name, thisuser): -    pipe = posix.popen('lpq -P' + name + ' 2>&1', 'r') +    pipe = os.popen('lpq -P' + name + ' 2>&1', 'r')      lines = []      users = {}      aheadbytes = 0      aheadjobs = 0 -    userseen = 0 +    userseen = False      totalbytes = 0      totaljobs = 0 -    while 1: -        line = pipe.readline() -        if not line: break -        fields = string.split(line) +    for line in pipe: +        fields = line.split()          n = len(fields)          if len(fields) >= 6 and fields[n-1] == 'bytes': -            rank = fields[0] -            user = fields[1] -            job = fields[2] +            rank, user, job = fields[0:3]              files = fields[3:-2] -            bytes = eval(fields[n-2]) +            bytes = int(fields[n-2])              if user == thisuser: -                userseen = 1 +                userseen = True              elif not userseen: -                aheadbytes = aheadbytes + bytes -                aheadjobs = aheadjobs + 1 -            totalbytes = totalbytes + bytes -            totaljobs = totaljobs + 1 -            if user in users: -                ujobs, ubytes = users[user] -            else: -                ujobs, ubytes = 0, 0 -            ujobs = ujobs + 1 -            ubytes = ubytes + bytes +                aheadbytes += bytes +                aheadjobs += 1 +            totalbytes += bytes +            totaljobs += 1 +            ujobs, ubytes = users.get(user, (0, 0)) +            ujobs += 1 +            ubytes += bytes              users[user] = ujobs, ubytes          else:              if fields and fields[0] != 'Rank': -                line = string.strip(line) +                line = line.strip()                  if line == 'no entries':                      line = name + ': idle'                  elif line[-22:] == ' is ready and printing':                      line = name                  lines.append(line) -    # +      if totaljobs: -        line = '%d K' % ((totalbytes+1023)//1024) +        line = '%d K' % ((totalbytes+1023) // 1024)          if totaljobs != len(users): -            line = line + ' (%d jobs)' % totaljobs +            line += ' (%d jobs)' % totaljobs          if len(users) == 1: -            line = line + ' for %s' % (list(users.keys())[0],) +            line += ' for %s' % next(iter(users))          else: -            line = line + ' for %d users' % len(users) +            line += ' for %d users' % len(users)              if userseen:                  if aheadjobs == 0: -                    line =  line + ' (%s first)' % thisuser +                    line += ' (%s first)' % thisuser                  else: -                    line = line + ' (%d K before %s)' % ( -                                   (aheadbytes+1023)//1024, thisuser) +                    line += ' (%d K before %s)' % ( +                        (aheadbytes+1023) // 1024, thisuser)          lines.append(line) -    # +      sts = pipe.close()      if sts:          lines.append('lpq exit status %r' % (sts,)) -    return string.joinfields(lines, ': ') +    return ': '.join(lines)  if __name__ == "__main__":      try:  | 
