#!/usr/bin/env python # -*- coding: us-ascii -*- # vim:ts=4:sw=4:softtabstop=4:smarttab:expandtab """Debug python script for debugging vim autocmd with filters and scite io.open() echo test | python C:\code\py\puren_tonbo\ptcat_debug.py echo test | py -2 C:\code\py\puren_tonbo\ptcat_debug.py echo test | py -3 C:\code\py\puren_tonbo\ptcat_debug.py """ import datetime import os import sys print('Python %s on %s' % (sys.version.replace('\n', ' - '), sys.platform)) is_py3 = sys.version_info >= (3,) """ I can't get this to work instead call py with -u param OR set os env var PYTHONUNBUFFERED to 1 (or true) if is_py3: sys.stdin.detach() # want unbuffered # TODO py27 option? " py3 did NOT work for ptcat_debug! " secret sauce is unbufferd IO is needed, defaults to buffered. " Can use -i param which works. " Can use os env PYTHONUNBUFFERED which works. " Failed to get sys.stdin.detach() to work """ if is_py3: in_file = sys.stdin.buffer else: #sys.stdin = os.fdopen(sys.stdin.fileno(), 'rb', 0) # unbuffered DOES NOT WORK in_file = sys.stdin if is_py3: out_file = sys.stdout.buffer else: out_file = sys.stdout data_count = 0 read_counter = 0 debug_file_name = os.path.join('c:\\', 'tmp', 'ptcat.debug') # NOTE backslash is needed on Drive letter - 'c:\\tmp\\ptcat.debug' c:\tmp\ptcat.debug debug_file = open(debug_file_name, 'wb') status_message = 'argv %r\n' % (sys.argv, ) status_message = status_message.encode('us-ascii') debug_file.write(status_message) ##debug_file.close() # DEBUG out_file.write(status_message) """ data = in_file.read() while data: #print('%r' % data) debug_file.write(data) data_count += len(data) read_counter += 1 data = in_file.read() """ while 1: data = in_file.read() # debug #out_file.write(data) out_file.write(b'>' + data + b'<\n') out_file.flush() #if not data: #if data == '': causes all sorts of issus with py3 if data == b'': break debug_file.write(data) data_count += len(data) read_counter += 1 status_message = 'read %r, len(data) bytes %r wrote to %s' % (read_counter, data_count, debug_file_name) status_message = status_message.encode('us-ascii') debug_file.write(status_message) debug_file.close() # en(data) 262 wrote to 'c:\\tmp\\ptcat.debug' # en(data) 262 wrote to 'c:\tmp\ptcat.debug' out_file.write(status_message)