Общие сведения о файле времени воспроизведения сценария

Поскольку вы упомянули, что знакомы с Python, вот скрипт python, который может выполнить эту работу:

#!/usr/bin/env python
from __future__ import print_function
import os,re,sys

def read_file(filepath):
    with open(filepath) as fd:
         for line in fd:
             clean_line = line.strip()

             if 'From file' in clean_line:

                 words = re.split('<|>| ', clean_line)
                 print(words[-2],end=" ")

             if 'Ratio of morphemes over utterances' in clean_line:
                 print(clean_line.split('=')[-1])



def find_files(treeroot):
    selfpath = os.path.abspath(__file__)
    for dir,subdirs,files in os.walk(treeroot):
         for f in files: 
             filepath = os.path.abspath(os.path.join(dir,f))
             if selfpath  ==  filepath: continue
             try:
                 read_file(filepath)
             except IOError:
                 pass
def main():
    directory = '.'
    if len(sys.argv) == 2:
       directory = sys.argv[1]
    find_files(os.path.abspath(directory))

if __name__ == '__main__': main()

Пример выполнения:

$ ./extract_data.py                                                                                               
adam02.cha  2.547
adam01.cha  2.213

Это работает просто: мы используем os.walk для рекурсивного обхода каталога, нахождения всех файлов и исключения самого скрипта, и для каждого файла мы запускаем функцию read_file () , которая считывает каждый файл построчно и находит соответствующие поля. re.split () используется для более удобного разбиения строки имени файла на список слов, используя пробел и < и > в качестве разделителей слов. Сценарий может принимать аргумент командной строки для каталога, но если он не указан, предполагается текущий рабочий каталог. Таким образом, вы можете запускать скрипт по пути или из каталога, в котором хранятся файлы.Что касается создания нового файла со всеми данными, это тривиально - используйте перенаправление оболочки как ./ extract_data.py> /path/to/new_file.txt. Предупреждение - перенаправьте сценарий в файл, расположенный в другом каталоге, поскольку новый файл может быть помещен в очередь в os.walk () и нарушить сценарий. Дополнительным улучшением является то, что вы можете вызывать цикл for для файлов как для f в sorted (files): , чтобы читать файлы в отсортированном виде.

1
07.03.2016, 03:19
1 ответ

На странице руководства для скрипта есть ответ:

-t , - time ] [= файл]
Выводит данные о времени в стандартную ошибку или в файл, если они заданы. Эти данные содержат два поля, разделенных пробелом . Поле первое указывает, сколько времени прошло с момента предыдущего вывода . Второе поле указывает, сколько символов было выведено на этот раз.Эту информацию можно использовать для воспроизведения машинописных текстов с реалистичными задержками ввода и вывода.

Итак, "размер каждого фрагмента" правильный.

3
27.01.2020, 23:26

Теги

Похожие вопросы