Вы можете легко найти документацию для любой команды Unix, выполнив поиск по ее справочной странице.
http://man7.org/linux/man-pages/man1/head.1.html
Любое основание c Введение в командную строку Unix также покажет, что head
читает первые n строк текстового файла, а tail
соответственно читает последние n строк текстовый файл.
Весь фрагмент соответствует
with open(os.environ['TMP']) as inputfile, open(os.environ['H_TMP'], 'w') as outputfile:
for line in inputfile:
# sed 's/[ \t]+/ /g' is re.sub(...)
# tr ... is lower()
line = re.sub(r'\s+', ' ' , line).lower()
outputfile.write(line)
# head --lines=1 -- quit after a single line
break
Выходное выражение регулярного выражения \s
соответствует множеству различных пробельных символов; если ваш ввод просто ASCII, он будет перекрываться с простым классом символов [ \t]
. Мы можем только догадываться, требуется ли вам, чтобы это совпадало строго с этими двумя символами, если вы действительно хотите обрабатывать Unicode.
Для максимальной компактности вы можете уменьшить это значение до
with open(os.environ['TMP']) as inputfile, open(os.environ['H_TMP'], 'w') as outputfile:
outputfile.write(re.sub(r'\s+', ' ' , inputfile.readline()).lower())
Если вы хотите чтобы прочитать фиксированное количество строк, где это число не равно 1, возможно, посмотрите на enumerate()
:
with open(os.environ['TMP']) as inputfile, open(os.environ['H_TMP'], 'w') as outputfile:
for lineno, line in enumerate(inputfile, 1):
line = re.sub(r'\s+', ' ' , line).lower()
outputfile.write(line)
if lineno == 234:
break