#!/usr/bin/env python2

"""
Subsamples lines from files or stdin if no files given.
"""

import sys, random
from optparse import OptionParser


parser = OptionParser(
    usage = "%prog [options] [FILE] ..."
)
parser.add_option(
    "--percent",
    help="subsample to have about PERCENT lines left in the file.",
    default=10,
    type=float,
    metavar="PERCENT"
)
parser.add_option(
    "--seed",
    help="Seed the random number generator with SEED.",
    default=0,
    type=int,
    metavar="SEED"
)
options, args = parser.parse_args()
if options.seed:
    random.seed(options.seed)

def subsample(handle):
    for line in handle:
        if random.random() < options.percent / 100:
            sys.stdout.write(line)

if args:
    for filename in args:
        subsample(open(filename))
else:
    subsample(sys.stdin)

