from __future__ import print_function
script = """
import argparse
import sys
parser = argparse.ArgumentParser(description="This is an example.")
parser.add_argument('file', nargs='?', default='', help='specifies a file.')
parser.add_argument('--file', help='specifies a file.')
args = parser.parse_args()
print("{} -> {}".format(sys.argv[1:], args))
# check for file argument
if not args.file:
raise Exception('Missing "file" argument')
"""
import shlex
import sys
from subprocess import Popen, PIPE, STDOUT
for line in sys .stdin :
args = shlex .split ( line)
print ( "run with {}" .format ( args) )
p = Popen( [ sys .executable , "-c" , script] + args, stdout= PIPE, stderr= STDOUT)
print ( p.communicate ( ) [ 0 ] .decode ( ) )
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgoKc2NyaXB0ID0gIiIiCgppbXBvcnQgYXJncGFyc2UKaW1wb3J0IHN5cwoKcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249IlRoaXMgaXMgYW4gZXhhbXBsZS4iKQpwYXJzZXIuYWRkX2FyZ3VtZW50KCdmaWxlJywgbmFyZ3M9Jz8nLCBkZWZhdWx0PScnLCBoZWxwPSdzcGVjaWZpZXMgYSBmaWxlLicpCnBhcnNlci5hZGRfYXJndW1lbnQoJy0tZmlsZScsIGhlbHA9J3NwZWNpZmllcyBhIGZpbGUuJykKCmFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCnByaW50KCJ7fSAtPiB7fSIuZm9ybWF0KHN5cy5hcmd2WzE6XSwgYXJncykpCgojIGNoZWNrIGZvciBmaWxlIGFyZ3VtZW50CmlmIG5vdCBhcmdzLmZpbGU6CiAgICByYWlzZSBFeGNlcHRpb24oJ01pc3NpbmcgImZpbGUiIGFyZ3VtZW50JykKIiIiCmltcG9ydCBzaGxleAppbXBvcnQgc3lzCmZyb20gc3VicHJvY2VzcyBpbXBvcnQgUG9wZW4sIFBJUEUsIFNURE9VVAoKZm9yIGxpbmUgaW4gc3lzLnN0ZGluOgogICAgYXJncyA9IHNobGV4LnNwbGl0KGxpbmUpCiAgICBwcmludCgicnVuIHdpdGgge30iLmZvcm1hdChhcmdzKSkKICAgIHAgPSBQb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsIHNjcmlwdF0gKyBhcmdzLCBzdGRvdXQ9UElQRSwgc3RkZXJyPVNURE9VVCkKICAgIHByaW50KHAuY29tbXVuaWNhdGUoKVswXS5kZWNvZGUoKSk=
stdout
run with ['abc']
['abc'] -> Namespace(file='abc')
run with ['--file', 'abc']
['--file', 'abc'] -> Namespace(file='')
Traceback (most recent call last):
File "<string>", line 15, in <module>
Exception: Missing "file" argument
run with []
[] -> Namespace(file='')
Traceback (most recent call last):
File "<string>", line 15, in <module>
Exception: Missing "file" argument
run with ['--file', 'abc', 'def']
['--file', 'abc', 'def'] -> Namespace(file='def')