Можно ли изменить вашу структуру, чтобы включить аргументы функции? Если вы вызываете его из другого скрипта, это упростит задачу.
def foo(input, output):
parser = optparse.OptionParser()
parser.add_option("-i", dest="input")
parser.add_option("-o", dest="output")
(options, args) = parser.parse_args()
if options.input:
input=options.input
if options.output:
output=options.output
do_something(input, output)
return
В противном случае вы можете попробовать подпроцесс при вызове из другого скрипта, так как это позволяет вам использовать args