Примеры работы с текстовыми файлами
В данной теме представлены примеры записи и чтения информации для текстовых файлов.
Содержание
- 1. Чтение/запись списка, содержащего n целых чисел
- 2. Чтение/запись списка, содержащего строки
- 3. Чтение/запись кортежа, содержащего объекты чисел с плавающей запятой
- 4. Чтение/запись кортежа содержащего разнотипные объекты
- 5. Чтение/запись словаря
- 6. Чтение/запись двумерной матрицы целых чисел, представленной в виде списка
- 7. Чтение/запись множества, которое содержит целые числа
- 8. Чтение/запись данных разных типов: список и кортеж
Поиск на других ресурсах:
1. Чтение/запись списка, содержащего n целых чисел
В примере демонстрируются следующие операции:
- создание списка из 10 случайных чисел;
- сохранение списка в текстовом файле;
- чтение из файла в новый список с целью контроля.
Текст программы следующий:
Результат работы программы
2. Чтение/запись списка, содержащего строки
При чтении/записи строк не нужно реализовывать дополнительные преобразования из одного типа в другой, так как данные из файла читаются в виде строк.
Результат работы программы
3. Чтение/запись кортежа, содержащего объекты чисел с плавающей запятой
Пример демонстрирует запись и чтение кортежа, который содержит объекты чисел с плавающей запятой.
Результат работы программы
Вид файла myfile5.txt
4. Чтение/запись кортежа содержащего разнотипные объекты
В случае, если кортеж содержит объекты разных типов при записи/чтении важно придерживаться последовательности этапов конвертирования объектов в нужный тип. Ниже приведен пример записи и чтения кортежа, который содержит объекты целого, логического и строчного типов.
Результат выполнения программы
5. Чтение/запись словаря
Словарь также можно записывать в файл. В данном примере записывается и читается словарь, который содержит перечень номеров дней недели и их названий. Для облегчения чтения данных каждый элемент словаря размещается в отдельной строке.
Результат работы программы
Вид файла myfile6.txt
6. Чтение/запись двумерной матрицы целых чисел, представленной в виде списка
В примере демонстрируется запись и чтение двумерной матрицы целых чисел размерностью 3*4.
Результат работы программы
Вид файла myfile8.txt
7. Чтение/запись множества, которое содержит целые числа
В примере демонстрируется возможный вариант сохранения множества в текстовом файле
Результат работы программы
Вид файла myfile7.txt
8. Чтение/запись данных разных типов: список и кортеж
Чтобы записать в текстовый файл данные разных базовых типов нужно последовательно записать данные одного типа, затем другого типа. При считывании таких данных нужно придерживаться такого самого порядка чтобы не нарушить полученную структуру данных.
В примере демонстрируется последовательная запись в файл списка и кортежа. При чтении придерживается такая же последовательность: сначала читается список, затем кортеж. Список включает строки. Кортеж содержит вещественные числа. Чтобы облегчить работу по распознаванию формата файла, каждый записываемый (читаемый) элемент размещается в отдельной строке файла.
Поскольку список и кортеж могут содержать разное количество элементов, то в файл записываются их размерности.
Reading complex .mat files.
This notebook shows an example of reading a Matlab .mat file, converting the data into a usable dictionary with loops, a simple plot of the data.
Reading a .mat file
First, we open our .mat file using loadmat from scipy.io . This function returns the variables in the .mat file as keys in a dictionary. Note that this function can only open .mat files less than version 7.3. If the version of your file is 7.3 or above, you have two options:
Open the file in Matlab and save as a lower version:
After v. 7.3, .mat files are saved as HDF5 files. This format is a super-set of netcdf (version 4) and can be read using the h5py package.
The example file we are reading has a complex data structure. Originally the file contained many additional variables, corresponding to other mooring lines, but we have reduced it to only contain data for a single set of moorings. The same techniques could be used with a loop to read the entire file.
Python has two data types similar to Matlab's struct : dict from standard Python and record arrays or stuctured arrays from numpy . I usually use dict as it is in the basic libraries, lots of information about them can be found online, and they're relatively simple to access. numpy also provides record arrays which are more similar to Matlab's struct arrays in that they can be any shape. Because of this, they are more powerful than dict but also a bit more confusing to access and use.
To start, we'll read in the file and print the keys of the dictionary the file was saved to. These keys correspond to the variable stored in the original .mat file.
Создать матрицу из текстового файла — python
Я пробовал это, но, как я уже сказал, я очень люблю питон и программирование.
WORKING SCRIPT. Один из моих друзей тоже помог мне, поэтому, если кто-то заинтересован в более простом сценарии, вот он. Он не самый эффективный, но работает отлично.
4 ответа
array([[ 5., 4., 3.], [ nan, 2., 1.], [ nan, nan, 0.]])
Хотя уже есть принятый ответ, он использует панды. Относительно общий способ получить тот же эффект, но не используя дополнительную библиотеку, это: (numpy используется, потому что OP задан numpy, однако вы можете добиться того же самого со списками)
Идея заключается в том, что вы собираете все буквы в алфавитном порядке, надеюсь, OP ограничится только английским алфавитом без особых символов (šđćžčę ° e и т.д.).
Мы создаем список из алфавита, чтобы мы могли использовать index метод для получения значения индекса. Т.е. uppercase.index(«A») равен 0 . Мы можем использовать эти индексы для заполнения нашего массива.
Прочитайте в файле по строкам, разделите лишние символы, разделите их пробелом, чтобы получить:
Это теперь фактическая рабочая часть:
Т.е. для буквы «А» idx оценивается как 0 и, следовательно, idy . Тогда matrix[0,0] становится значением tmp[2] которое равно 4 . Следуя той же логике для «B», получаем matrix[0,1]=5 . И так далее.
scipy.io.loadmat#
Name of the mat file (do not need .mat extension if appendmat==True). Can also pass open file-like object.
mdict dict, optional
Dictionary in which to insert matfile variables.
appendmat bool, optional
True to append the .mat extension to the end of the given filename, if not already present. Default is True.
byte_order str or None, optional
None by default, implying byte order guessed from mat file. Otherwise can be one of (‘native’, ‘=’, ‘little’, ‘<’, ‘BIG’, ‘>’).
mat_dtype bool, optional
If True, return arrays in same dtype as would be loaded into MATLAB (instead of the dtype with which they are saved).
squeeze_me bool, optional
Whether to squeeze unit matrix dimensions or not.
chars_as_strings bool, optional
Whether to convert char arrays to string arrays.
matlab_compatible bool, optional
Returns matrices as would be loaded by MATLAB (implies squeeze_me=False, chars_as_strings=False, mat_dtype=True, struct_as_record=True).
struct_as_record bool, optional
Whether to load MATLAB structs as NumPy record arrays, or as old-style NumPy arrays with dtype=object. Setting this flag to False replicates the behavior of scipy version 0.7.x (returning NumPy object arrays). The default setting is True, because it allows easier round-trip load and save of MATLAB files.
verify_compressed_data_integrity bool, optional
Whether the length of compressed sequences in the MATLAB file should be checked, to ensure that they are not longer than we expect. It is advisable to enable this (the default) because overlong compressed sequences in MATLAB files generally indicate that the files have experienced some sort of corruption.
variable_names None or sequence
If None (the default) — read all variables in file. Otherwise, variable_names should be a sequence of strings, giving names of the MATLAB variables to read from the file. The reader will skip any variable with a name not in this sequence, possibly saving some read processing.
simplify_cells False, optional
If True, return a simplified dict structure (which is useful if the mat file contains cell arrays). Note that this only affects the structure of the result and not its contents (which is identical for both output structures). If True, this automatically sets struct_as_record to False and squeeze_me to True, which is required to simplify cells.
Returns : mat_dict dict
dictionary with variable names as keys, and loaded matrices as values.
v4 (Level 1.0), v6 and v7 to 7.2 matfiles are supported.
You will need an HDF5 Python library to read MATLAB 7.3 format mat files. Because SciPy does not supply one, we do not implement the HDF5 / 7.3 interface here.