def get_rows(self, infer_nrows, skiprows=None):
if skiprows is None:<EOL><INDENT>skiprows = set()<EOL><DEDENT>buffer_rows = []<EOL>detect_rows = []<EOL>for i, row in enumerate(self.f):<EOL><INDENT>if i not in skiprows:<EOL><INDENT>detect_rows.append(row)<EOL><DEDENT>buffer_rows.append(row)<EOL>if len(detect_rows) >= infer_nrows:<EOL><INDENT>break<EOL><DEDENT><DEDENT>self.buffer = iter(buffer_rows)<EOL>return detect_rows<EOL>
Read rows from self.f, skipping as specified.

We distinguish buffer_rows (the first <= infer_nrows
lines) from the rows returned to detect_colspecs
because it's simpler to leave the other locations
with skiprows logic alone than to modify them to
deal with the fact we skipped some rows here as
well.

Parameters
----------
infer_nrows : int
    Number of rows to read from self.f, not counting
    rows that are skipped.
skiprows: set, optional
    Indices of rows to skip.

Returns
-------
detect_rows : list of str
    A list containing the rows to read.