Дуже часто в (текстовому) файлі ми маємо вихідні дані для розрахунку або вимірювань за допомогою експерименту. Для того, щоб маніпулювати цими даними та обчислювати з ними, ми повинні навчитися читати їх як числа або масиви. Аналогічним чином, результат обчислення або аналізу необхідний, щоб скинути його в текстовий файл, а не показувати на екрані, щоб зберегти результат. Це особливо необхідно, коли результати є довгими масивами або коли нам доводиться обробляти велику кількість файлів. Ми побачимо, як читати та писати текстові файли, тобто букви та цифри та розділові знаки, за допомогою Python.
9.1. Створення простого файлу¶
У попередніх прикладах файл було відкрито декількома можливими способами, де ми вказали ім'я файлу в першому параметрі, а в другому - режим відкриття:
Таким же чином ми можемо використовувати цикл for для написання списку даних:
Таким чином ми створюємо файл з іменем data.txt, в якому в два стовпці записано перші сто позитивних цілих чисел та їх експоненціальний показник (із загальною кількістю 10 символів та чотирма десятковими знаками). Ми можемо бачити вміст цього файлу в будь-якому текстовому редакторі або на консолі Linux за допомогою cat, як ми вже знаємо.
9.2. Читання файлів¶
але таким чином легше зрозуміти, що ти насправді робиш.
Важливо пам’ятати, що дані (цифри, літери, символи тощо) записуються і читаються як рядкові змінні. Тому, якщо ми хочемо працювати з ними, ми повинні перетворити їх у відповідні типи змінних (int, float, list, array,.).
Тепер, коли ми маємо всі дані в масивах, ми можемо ними маніпулювати. Пам’ятайте, що split () за замовчуванням відокремлює дані в тексті, розділені пробілами; якщо ми хочемо розділити комами або іншим символом, ми повинні включити його як параметр: split (',') .
9.3. Читання та запис файлів даних за допомогою numpy ¶
Слід зазначити, що якщо таким чином ми зберігаємо кілька файлів у файлі, savetxt () зберігає кожен підряд, так що x_datos займає перший рядок файлу, а y_datos - другий, а не в стовпцях і при його читанні. з loadtxt (), змінна x містить весь перший рядок, а y другий. Однак у випадку, якщо ми хочемо зберегти лише одновимірний масив, він записується в один стовпець.
З іншого боку, якщо ми прочитаємо файл і завантажимо дані в один масив, давайте подивимось, як це виглядає:
тобто двовимірний масив 2 х 100, який відповідає спочатку двом рядкам, а потім 100 стовпцям. Це означає, що якщо у нас є текстовий файл із кількома стовпцями (як зазвичай), наприклад data.txt, який містить:
ми можемо прочитати це так:
але якщо ми хочемо передати його безпосередньо окремим масивам, ми повинні використовувати параметр unpack = True, який він робить обміном рядків на стовпці (транспонування масиву):
Вищезазначене необхідно лише у тому випадку, якщо файл має кілька стовпців, якщо він має лише один, не потрібно використовувати unpack = True .
Припустимо, тепер нам цікаво читати дані з файлу з рядка 50, а не з самого початку, і що стовпці також відокремлюються комами замість пробілів; ми можемо вказати це з додатковими параметрами:
Зверніться за допомогою функції numpy loadtxt () щодо інших параметрів читання, таких як вибір конкретних стовпців, визначення іншого символу коментаря серед інших параметрів.