Автоматизированный скрипт для добавления запятой между собой и организации значений ASCII из файла .txt в строки? - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть список из 20 000+ значений ASCII в текстовом файле.
, т. Е.

   2.4414063e-04
   3.0517578e-04
   3.6621094e-04
   4.5776367e-04
   5.4931641e-04
   6.4086914e-04
   7.3242188e-04
   8.2397461e-04
   9.1552734e-04
   1.0375977e-03
   1.1596680e-03

Мне нужно добавить запятую сразу после каждой записи, также я бы хотел организоватьинформация в строках 10. Каков наилучший метод для создания автоматизированного скрипта Python для этого?

1 Ответ

1 голос
/ 24 сентября 2019

Читайте input_file построчно, сохраняя каждое значение, убранное из начальных / конечных пробелов в списке.Когда длина списка равна 10, join все 10 элементов в строку (разделенные запятой и пробелом).Добавьте строку к output_file.Повторно инициализируйте список, чтобы он опустел, и повторяйте, пока в input_file не останется больше строк.После выхода из цикла for, который читает строки в файле, проверьте, есть ли в списке какие-либо элементы, которые нужно записать в output_file.Это может произойти, если число значений / строк в input_file не кратно 10.

# Read values from input_file and output as comma-separated values with 10 values per row
def process_input_txt_file(input_file, output_file):
    log.debug('Enter process_input_txt_file')

    # Create / overwrite existing output_file
    open(output_file, 'w+').close()

    # Store each value stripped of leading / trailing whitespace in a list
    value_list = []
    with open(input_file, 'r') as input_fh:
        for line in input_fh:
            value = line.strip()
            value_list += [value]

            if len(value_list) == 10:
                # Store the 10 values as a string, comma-separated
                value_row = '%s' % ', '.join(map(str, value_list))
                # Empty the list
                value_list = []

                # Write the string to output_file, on one line (row)
                with open(output_file, 'a') as output_fh:
                    print(value_row, file=output_fh)

        # Check if value_list contains any elements
        if value_list:
            # Store the remaining values as a string, comma-separated
            value_row = '%s' % ', '.join(map(str, value_list))
            # Write the string to output_file, on one line (row)
            with open(output_file, 'a') as output_fh:
                print(value_row, file=output_fh)

Я протестировал этот скрипт с 100,001 значениями / строками, и это заняло чуть менее 3 секунд:

[2019-09-23 21:52:21,639] [main] Start example.py execution
[2019-09-23 21:52:21,643] [process_input_txt_file] Enter process_input_txt_file
[2019-09-23 21:52:23,931] [main] End example.py execution
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...