Вот версия Python (2.6) (если у вас есть Python 2.5, добавьте первую строку, которая говорит
from __future__ import with_statement
и скрипт тоже будет работать) ...:
import sys
def main(N):
rN = range(N)
for iout, iin in enumerate(xrange(1, 99999, N)):
with open('data_new_%s.txt' % (iout+1), 'w') as out:
for di in rN:
try: fin = open('data%s.txt' % (iin + di), 'r')
except IOError: return
out.write(fin.read())
fin.close()
if __name__ == '__main__':
if len(sys.argv) > 1:
N = int(sys.argv[1])
else:
N = 5
main(N)
Как видно из других ответов и комментариев, мнения о производительности расходятся - некоторые полагают, что запуск Python (и импорт модулей) сделает это медленнее, чем bash (но, по крайней мере, часть импорта является поддельной: sys
, единственный необходимый модуль - это встроенный модуль, не требующий «загрузки» и, следовательно, в основном незначительные накладные расходы на его импорт); Я подозреваю, что избегание повторного форка / exec cat
может замедлить bash; другие считают, что ввод-вывод будет доминировать в любом случае, что делает оба решения эквивалентными. Вам нужно будет сравнить свои собственные файлы в своей системе, чтобы решить это сомнение в производительности.