commit
104b6150f8
5 changed files with 131 additions and 32 deletions
@ -0,0 +1,60 @@ |
||||
#!/usr/bin/env python |
||||
|
||||
import sys |
||||
import subprocess |
||||
from io import RawIOBase |
||||
|
||||
|
||||
class StreamFilter(RawIOBase): |
||||
def __init__(self, conds, stream): |
||||
super().__init__() |
||||
self.conds = conds |
||||
self.stream = stream |
||||
|
||||
def readinto(self, _): |
||||
pass |
||||
|
||||
def write(self, msg): |
||||
if all(cond(msg) for cond in self.conds): |
||||
self.stream.write(msg) |
||||
else: |
||||
pass |
||||
|
||||
|
||||
class CleanLog(object): |
||||
def __init__(self, filter_, stream_name): |
||||
self.filter = filter_ |
||||
self.stream_name = stream_name |
||||
self.old_stream = getattr(sys, stream_name) |
||||
|
||||
def __enter__(self): |
||||
setattr(sys, self.stream_name, self.filter) |
||||
|
||||
def __exit__(self, exc_type, exc_value, traceback): |
||||
setattr(sys, self.stream_name, self.old_stream) |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
if len(sys.argv) < 2: |
||||
raise TypeError("请指定需要运行的脚本!") |
||||
|
||||
tar_file = sys.argv[1] |
||||
gdal_filter = StreamFilter([ |
||||
lambda msg: "Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel." not in msg |
||||
], sys.stdout) |
||||
with CleanLog(gdal_filter, 'stdout'): |
||||
proc = subprocess.Popen( |
||||
["python", tar_file], |
||||
stderr=subprocess.STDOUT, |
||||
stdout=subprocess.PIPE, |
||||
text=True) |
||||
while True: |
||||
try: |
||||
out_line = proc.stdout.readline() |
||||
if out_line == '' and proc.poll() is not None: |
||||
break |
||||
if out_line: |
||||
print(out_line, end='') |
||||
except KeyboardInterrupt: |
||||
import signal |
||||
proc.send_signal(signal.SIGINT) |
Loading…
Reference in new issue