In [1]:
%matplotlib notebook

Branje iz datotek v Pythonu

Preprosto branje

Datoteke z eno vrednostjo v vrstici


In [2]:
# Ustvarimo prazen seznam vrstic, ki jih bomo prebrali
data = []

In [3]:
# Ukaz 'with' zagotovi, da se datoteka na koncu bloka zapre in nam
# ni potrebno vec paziti na to
with open('../data/stolpec.dat', 'r') as f:
    # preberemo celotno datoteko, locimo vrstice in pretvorimo
    # vrednosti v cela stevila
    data = [int(x) for x in f.read().split()]

print(data)


[4, 1, 3, 6, 4, 5, 3, 2, 5, 3, 2, 4, 2, 4, 6, 2, 4, 5, 5, 6, 2, 5, 4, 1, 2, 1, 6, 6, 5, 2, 2, 4, 6, 5, 5, 2, 1, 1, 6, 6, 5, 2, 2, 5, 1, 4, 1, 4, 6, 5, 4, 6, 2, 5, 6, 2, 3, 2, 5, 6, 1, 6, 3, 5, 3, 1, 3, 4, 6, 5, 3, 5, 4, 6, 6, 5, 5, 1, 3, 3, 5, 4, 4, 2, 2, 3, 2, 5, 2, 1, 6, 4, 3, 5, 4, 3, 5, 3, 6, 6, 2, 3, 3, 1, 1, 3, 6, 6, 4, 6, 3, 5, 5, 2, 5, 3, 5, 2, 4, 5, 5, 6, 5, 5, 1, 1, 6, 3, 4, 3, 4, 1, 5, 5, 6, 3, 5, 5, 3, 2, 1, 1, 2, 4, 2, 4, 1, 2, 2, 6, 1, 1, 5, 6, 5, 1, 1, 6, 1, 6, 3, 6, 6, 1, 4, 2, 3, 5, 2, 5, 3, 5, 1, 5, 6, 4, 1, 3, 6, 4, 4, 6, 3, 5, 3, 4, 4, 3, 1, 4, 2, 4, 4, 3, 3, 1, 2, 5, 6, 3]

In [4]:
# Lahko pa beremo tudi vrstico po vrstico in sproti kaj delamo s prebranim
with open('../data/stolpec.dat', 'r') as f:
    for line in f:
        print(int(line))


4
1
3
6
4
5
3
2
5
3
2
4
2
4
6
2
4
5
5
6
2
5
4
1
2
1
6
6
5
2
2
4
6
5
5
2
1
1
6
6
5
2
2
5
1
4
1
4
6
5
4
6
2
5
6
2
3
2
5
6
1
6
3
5
3
1
3
4
6
5
3
5
4
6
6
5
5
1
3
3
5
4
4
2
2
3
2
5
2
1
6
4
3
5
4
3
5
3
6
6
2
3
3
1
1
3
6
6
4
6
3
5
5
2
5
3
5
2
4
5
5
6
5
5
1
1
6
3
4
3
4
1
5
5
6
3
5
5
3
2
1
1
2
4
2
4
1
2
2
6
1
1
5
6
5
1
1
6
1
6
3
6
6
1
4
2
3
5
2
5
3
5
1
5
6
4
1
3
6
4
4
6
3
5
3
4
4
3
1
4
2
4
4
3
3
1
2
5
6
3

Matrike


In [5]:
# Ustvarimo prazen seznam vrstic, ki jih bomo prebrali
data = []

In [6]:
# Ukaz 'with' zagotovi, da se datoteka na koncu bloka zapre in nam
# ni potrebno vec paziti na to
with open('../data/matrika.dat', 'r') as f:
    # beremo vrstico po vrstico
    for line in f:
        # odstranimo odvecne presledke
        line = line.strip()
        # locimo podake po presledkih in jih pretvorimo v celo stevilo
        h = [int(x) for x in line.split()]
        # dodamo vrstico
        data.append(h)

print(data)


[[4, 5, 10, 100], [5, 43, 53, 23], [34, 42, 2, 2342], [2, 5, 5, 634]]

Branje z numpy

Uvozimo modula numpy (za branje) in matplotlib (za graf)


In [10]:
import numpy as np
import matplotlib.pyplot as plt

Preberemo podatke o vremenu iz datoteke. Pri tem v enem ukazu določimo veliko opcij, kot so

  • koliko vrstic želimo izpustiti v glavi
  • s katerim znakom so podatki ločeni v posamezni vrstici
  • kateri stolpci nas zanimajo

Več informacij na Numpy in numpy.loadtxt.


In [11]:
data = np.loadtxt('../data/TG_STAID003331.txt',  # pot do datoteke
                  skiprows=20,     # izpustimo prvih 20 vrstic
                  delimiter=',',   # podatke locimo po vejici
                  usecols=(1, 2))  # zanimata nas samo drugi in tretji stolpec

In [12]:
# Narisemo le drugi stolpec iz podatkov (torej tretji)
plt.plot(data[:, 1])
plt.show()


Vec o preprostem risanju grafov v matplotlib.ipynb.