Много често имаме първоначални данни за изчисление или измервания от експеримент в (текстов) файл. За да манипулираме тези данни и да изчислим с тях, трябва да се научим да ги четем като числа или масиви. По същия начин е необходим резултатът от изчисление или анализ, за ​​да го изхвърлите в текстов файл, вместо да го показвате на екрана, за да запазите резултата. Това е особено необходимо, когато резултатите са дълги масиви или когато трябва да обработим голям брой файлове. Ще видим как да четем и пишем текстови файлове, т.е. букви и цифри и препинателни знаци, с 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 x 100, който съответства първо на двата реда и след това на 100 колони. Това означава, че ако имаме текстов файл с няколко колони (както обикновено), като data.txt, който съдържа:

можем да го прочетем по следния начин:

но ако искаме да го предадем директно на отделни масиви, трябва да използваме параметъра unpack = True, който прави, че обменя редове за колони (транспониране на масива):

Горното е необходимо само ако файлът има няколко колони, ако има само една не е необходимо да използвате unpack = True .

Сега да предположим, че се интересуваме от четене на данните от файл от ред 50, а не от самото начало и че колоните също са разделени със запетаи вместо интервали; можем да го посочим с допълнителни параметри:

Консултирайте се с помощта на функцията loadtxt () на numpy, за да знаете други опции за четене, като например избиране на конкретни колони, дефиниране на друг символ за коментар, наред с други опции.