<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>http://brain.fuw.edu.pl/edu/index.php?action=history&amp;feed=atom&amp;title=TI%2FWej%C5%9Bcie_i_wyj%C5%9Bcie</id>
	<title>TI/Wejście i wyjście - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="http://brain.fuw.edu.pl/edu/index.php?action=history&amp;feed=atom&amp;title=TI%2FWej%C5%9Bcie_i_wyj%C5%9Bcie"/>
	<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=TI/Wej%C5%9Bcie_i_wyj%C5%9Bcie&amp;action=history"/>
	<updated>2026-04-26T14:06:00Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>http://brain.fuw.edu.pl/edu/index.php?title=TI/Wej%C5%9Bcie_i_wyj%C5%9Bcie&amp;diff=1658&amp;oldid=prev</id>
		<title>Jarekz: /* Pliki */</title>
		<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=TI/Wej%C5%9Bcie_i_wyj%C5%9Bcie&amp;diff=1658&amp;oldid=prev"/>
		<updated>2015-05-22T20:50:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Pliki&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;pl&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← poprzednia wersja&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Wersja z 20:50, 22 maj 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l64&quot; &gt;Linia 64:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 64:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Różne typy plików opisane są w [[TI&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;:&lt;/del&gt;Technologia_Informacyjna/Wszystko_jest_plikiem|materiałach do wykładu]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Różne typy plików opisane są w [[TI&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;/&lt;/ins&gt;Technologia_Informacyjna/Wszystko_jest_plikiem|materiałach do wykładu]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dostęp do plików na dysku uzyskuje się w Pythonie poprzez klasę &amp;lt;tt&amp;gt;file&amp;lt;/tt&amp;gt;, która reprezentuje otwarty plik. Plik otwieramy wywołując funkcję &amp;lt;tt&amp;gt;open&amp;lt;/tt&amp;gt; podając nazwę pliku. Otwarcie pliku oznacza, że system operacyjny zezwolił nam na dostęp do niego, i możemy wykonywać operacje odczytu i zapisu.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dostęp do plików na dysku uzyskuje się w Pythonie poprzez klasę &amp;lt;tt&amp;gt;file&amp;lt;/tt&amp;gt;, która reprezentuje otwarty plik. Plik otwieramy wywołując funkcję &amp;lt;tt&amp;gt;open&amp;lt;/tt&amp;gt; podając nazwę pliku. Otwarcie pliku oznacza, że system operacyjny zezwolił nam na dostęp do niego, i możemy wykonywać operacje odczytu i zapisu.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l240&quot; &gt;Linia 240:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 240:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;pylab.show()&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;pylab.show()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Pickle'owanie i podobne czynności ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Pickle'owanie i podobne czynności ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jarekz</name></author>
		
	</entry>
	<entry>
		<id>http://brain.fuw.edu.pl/edu/index.php?title=TI/Wej%C5%9Bcie_i_wyj%C5%9Bcie&amp;diff=1657&amp;oldid=prev</id>
		<title>Jarekz: /* Porównanie danych „świeżych” i „konserwowych” */</title>
		<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=TI/Wej%C5%9Bcie_i_wyj%C5%9Bcie&amp;diff=1657&amp;oldid=prev"/>
		<updated>2015-05-22T20:49:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Porównanie danych „świeżych” i „konserwowych”&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;pl&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← poprzednia wersja&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Wersja z 20:49, 22 maj 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l352&quot; &gt;Linia 352:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 352:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;== Porównanie danych „świeżych” i „konserwowych” &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Porównanie danych „świeżych” i „konserwowych” ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Powyżej zostały przedstawione dwa mechanizmy zachowywania danych w postaci obiektów bezpośrednio do plików. Matlabowy format '.mat'&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Powyżej zostały przedstawione dwa mechanizmy zachowywania danych w postaci obiektów bezpośrednio do plików. Matlabowy format '.mat'&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;jest przewidziany do przechowywania struktur danych z Matlaba, a ponieważ menażeria obiektów w Pythonie jest bogatsza, to nie wszystko da się zachować. Niemniej założenie jest takie samo — by zapisać obiekty jako ciąg bajtów w pliku. Przecież już normalnie można dane odczytywać z i zapisywać do plików, więc kiedy programista powinien zdecydować się na ''picklowanie''?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;jest przewidziany do przechowywania struktur danych z Matlaba, a ponieważ menażeria obiektów w Pythonie jest bogatsza, to nie wszystko da się zachować. Niemniej założenie jest takie samo — by zapisać obiekty jako ciąg bajtów w pliku. Przecież już normalnie można dane odczytywać z i zapisywać do plików, więc kiedy programista powinien zdecydować się na ''picklowanie''?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jarekz</name></author>
		
	</entry>
	<entry>
		<id>http://brain.fuw.edu.pl/edu/index.php?title=TI/Wej%C5%9Bcie_i_wyj%C5%9Bcie&amp;diff=1656&amp;oldid=prev</id>
		<title>Jarekz: /* Pliki matlabowe */</title>
		<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=TI/Wej%C5%9Bcie_i_wyj%C5%9Bcie&amp;diff=1656&amp;oldid=prev"/>
		<updated>2015-05-22T20:49:02Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Pliki matlabowe&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;pl&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← poprzednia wersja&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Wersja z 20:49, 22 maj 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l329&quot; &gt;Linia 329:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 329:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;==Pliki matlabowe&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Pliki matlabowe==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;W pracy z programem [http://www.mathworks.com/ Matlab firmy Mathworks]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;W pracy z programem [http://www.mathworks.com/ Matlab firmy Mathworks]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;można zachować zmienne z bieżącego środowiska pracy do pliku.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;można zachować zmienne z bieżącego środowiska pracy do pliku.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jarekz</name></author>
		
	</entry>
	<entry>
		<id>http://brain.fuw.edu.pl/edu/index.php?title=TI/Wej%C5%9Bcie_i_wyj%C5%9Bcie&amp;diff=1655&amp;oldid=prev</id>
		<title>Jarekz: /* Zapisywanie danych w numpy */</title>
		<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=TI/Wej%C5%9Bcie_i_wyj%C5%9Bcie&amp;diff=1655&amp;oldid=prev"/>
		<updated>2015-05-22T20:48:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Zapisywanie danych w numpy&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;pl&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← poprzednia wersja&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Wersja z 20:48, 22 maj 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l287&quot; &gt;Linia 287:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 287:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Aby odczytać „zakonserwowane” dane z pliku, otwieramy plik w trybie do odczytu. Funkcja &amp;lt;tt&amp;gt;pickle.load&amp;lt;/tt&amp;gt; pozwala nam odczytać dokładnie to co zapisaliśmy.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Aby odczytać „zakonserwowane” dane z pliku, otwieramy plik w trybie do odczytu. Funkcja &amp;lt;tt&amp;gt;pickle.load&amp;lt;/tt&amp;gt; pozwala nam odczytać dokładnie to co zapisaliśmy.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;== Zapisywanie danych w numpy &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Zapisywanie danych w numpy ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;W module numpy dostępnych jest kilka funkcji obsługujących wygodny zapis i odczytywanie obiektów, a w szczególności macierzy: [http://docs.scipy.org/doc/numpy/reference/generated/numpy.save.html#numpy.save save],[http://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html#numpy.savetxt savetxt]. Poniżej opiszemy nieco dokładniej funkcję &amp;lt;tt&amp;gt;numpy.savez&amp;lt;/tt&amp;gt;.  Jej składnia jest następująca:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;W module numpy dostępnych jest kilka funkcji obsługujących wygodny zapis i odczytywanie obiektów, a w szczególności macierzy: [http://docs.scipy.org/doc/numpy/reference/generated/numpy.save.html#numpy.save save],[http://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html#numpy.savetxt savetxt]. Poniżej opiszemy nieco dokładniej funkcję &amp;lt;tt&amp;gt;numpy.savez&amp;lt;/tt&amp;gt;.  Jej składnia jest następująca:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang= python&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang= python&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l328&quot; &gt;Linia 328:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 328:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Pliki matlabowe===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Pliki matlabowe===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jarekz</name></author>
		
	</entry>
	<entry>
		<id>http://brain.fuw.edu.pl/edu/index.php?title=TI/Wej%C5%9Bcie_i_wyj%C5%9Bcie&amp;diff=1654&amp;oldid=prev</id>
		<title>Jarekz: Utworzono nową stronę &quot; ==Wprowadzenie== Twój program, jeśli ma robić coś użytecznego, zazwyczaj musi komunikować się z użytkownikiem. Na przykład, na podstawie wprowadzonych przez u...&quot;</title>
		<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=TI/Wej%C5%9Bcie_i_wyj%C5%9Bcie&amp;diff=1654&amp;oldid=prev"/>
		<updated>2015-05-22T20:48:19Z</updated>

		<summary type="html">&lt;p&gt;Utworzono nową stronę &amp;quot; ==Wprowadzenie== Twój program, jeśli ma robić coś użytecznego, zazwyczaj musi komunikować się z użytkownikiem. Na przykład, na podstawie wprowadzonych przez u...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
==Wprowadzenie==&lt;br /&gt;
Twój program, jeśli ma robić coś użytecznego, zazwyczaj musi komunikować się z użytkownikiem. Na przykład, na podstawie wprowadzonych przez użytkownika danych program wykonuje pewne obliczenia i następnie wypisuje wynik, przekazując go tym samym użytkownikowi. Ten moment kiedy informacja zostaje wprodzona do programu, lub kiedy program zapisuje wyniki swojego działania gdzieś indziej niż w swojej pamięci, nazywamy operacjami wejścia/wyjścia.&lt;br /&gt;
&lt;br /&gt;
W najprostszym wypadku komunikację z otoczeniem można wykonać przy użyciu funkcji &amp;lt;tt&amp;gt;raw_input&amp;lt;/tt&amp;gt; i&amp;amp;nbsp;wyrażenia &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;, które odpowiednio wczytują linijkę i wypisują linijkę tekstu.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Formatowanie danych, czyli szczegóły konwersji różnych zmiennych na tekst, można wykonać używając różne metody klasy &amp;lt;tt&amp;gt;str&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Na przykład, wyrównanie do prawej i dopełnienie z lewej strony spacjami można wykonać używając &amp;lt;tt&amp;gt;str.rjust&amp;lt;/tt&amp;gt;. Opis całej plejady różnych funkcji formatujących jest dostępny przez &amp;lt;tt&amp;gt;help(str)&amp;lt;/tt&amp;gt; (lub w [http://docs.python.org/library/stdtypes.html#string-methods dokumentacji]).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
W bardziej zaawansowanej wersji komunikacji z otoczeniem, program odczytuje i zapisuje informację w plikach na dysku. Pozwala to na przechowywanie danych w sposób trwały &amp;amp;mdash; pliku w przeciwieństwie do napisów na ekranie przeżywają wyłączenie i włączenie komputera.  Tworzenie plików, odczytywanie i zmiana ich zawartości to podstawowe narzędzie, które zostanie przedstawione w tym rozdziale.&lt;br /&gt;
&lt;br /&gt;
==Wprowadzanie danych przez użytkownika==&lt;br /&gt;
; Przykład&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang= python&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding:utf-8 -*-&lt;br /&gt;
# user_input.py&lt;br /&gt;
&lt;br /&gt;
def reversed(text):&lt;br /&gt;
    return text[::-1]&lt;br /&gt;
&lt;br /&gt;
def palindrom(text):&lt;br /&gt;
    return text == reversed(text)&lt;br /&gt;
&lt;br /&gt;
napis = input('Wprowadź napis: ')&lt;br /&gt;
if palindrom(napis):&lt;br /&gt;
    print(&amp;quot;Tak, to palindrom&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Nie, to zwykłe słowo&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Wynik&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;source lang='shell_example'&amp;gt;&lt;br /&gt;
$ python user_input.py&lt;br /&gt;
Wprowadź napis: abrakadabra&lt;br /&gt;
Nie, to zwykłe słowo&lt;br /&gt;
&lt;br /&gt;
$ python user_input.py&lt;br /&gt;
Wprowadź napis: kajak&lt;br /&gt;
Tak, to palindrom&lt;br /&gt;
&lt;br /&gt;
$ python user_input.py&lt;br /&gt;
Wprowadź napis: 1234321&lt;br /&gt;
Tak, to palindrom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Jak to działa? ===&lt;br /&gt;
Funkcja &amp;lt;tt&amp;gt;reversed&amp;lt;/tt&amp;gt; zwraca swój argument w odwrotnej kolejności wykorzystując zaawansowane indeksowanie.&lt;br /&gt;
Poprzednio była mowa o indeksowaniu z dwoma argumentami &amp;lt;tt&amp;gt;[a:b]&amp;lt;/tt&amp;gt; — czyli braniu podsekwencji od pozycji &amp;lt;tt&amp;gt;a&amp;lt;/tt&amp;gt; do pozycji &amp;lt;tt&amp;gt;b&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Tutaj pierwsze dwa parametry są pomięte, czyli przyjmują wartości domyślne. Jako trzeci parametr, czyli krok, podajemy –1.&lt;br /&gt;
Ujemny krok oznacza przejście od końca do początku, w ten sposób otrzymujemy sekwencję w odwrotnej kolejności.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Funkcja &amp;lt;tt&amp;gt;raw_input&amp;lt;/tt&amp;gt; używa podanego argumentu jako zachęty dla użytkownika i czeka na jego odpowiedź. Po tym użytkownik coś wpisze, a tak naprawdę po tym jak naciśnie klawisz Enter, funkcja &amp;lt;tt&amp;gt;raw_input&amp;lt;/tt&amp;gt; kończy swoje działanie i zwraca wpisany tekst.&lt;br /&gt;
&lt;br /&gt;
Program porównuje wpisany tekst z jego odwrotnością. Porównywanie sekwencji oznacza przyrównanie ich element po elemencie, czyli w tym wypadku litera po literze. W wypadku gdy porównanie nie znalazło różnic, możemy oznajmić, że tekst jest [http://pl.wiktionary.org/wiki/palindrom słowem lustrzanym].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- praca domowa pominięta --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pliki==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Różne typy plików opisane są w [[TI:Technologia_Informacyjna/Wszystko_jest_plikiem|materiałach do wykładu]].&lt;br /&gt;
Dostęp do plików na dysku uzyskuje się w Pythonie poprzez klasę &amp;lt;tt&amp;gt;file&amp;lt;/tt&amp;gt;, która reprezentuje otwarty plik. Plik otwieramy wywołując funkcję &amp;lt;tt&amp;gt;open&amp;lt;/tt&amp;gt; podając nazwę pliku. Otwarcie pliku oznacza, że system operacyjny zezwolił nam na dostęp do niego, i możemy wykonywać operacje odczytu i zapisu. &lt;br /&gt;
&lt;br /&gt;
; Przykład&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Część pierwsza użycia pliku:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang= python&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
&lt;br /&gt;
tekst = '''\&lt;br /&gt;
Litwo! Ojczyzno moja! ty jesteś jak zdrowie;&lt;br /&gt;
Ile cię trzeba cenić, ten tylko się dowie,&lt;br /&gt;
Kto cię stracił. Dziś piękność twą w całej ozdobie&lt;br /&gt;
Widzę i opisuję, bo tęsknię po tobie.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
f1 = open('wiersz.txt', 'w')&lt;br /&gt;
                # 'w' oznacza, że będziemy pisać do pliku&lt;br /&gt;
f1.write(tekst)&lt;br /&gt;
f1.close()       # 'wypchnięcie' zmian do pliku przez jego zamknięcie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Rezultat&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;source lang='shell_example'&amp;gt;&lt;br /&gt;
$ python zapis_pliku.py&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Część druga użycia pliku:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang= python&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
&lt;br /&gt;
f2 = open('wiersz.txt')&lt;br /&gt;
                # brak drugiego argumentu oznacza 'tylko odczyt'&lt;br /&gt;
for wers in f2:&lt;br /&gt;
    print wers,&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Rezultat&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;source lang='shell_example'&amp;gt;&lt;br /&gt;
$ python odczyt_pliku.py&lt;br /&gt;
Litwo! Ojczyzno moja! ty jesteś jak zdrowie;&lt;br /&gt;
Ile cię trzeba cenić, ten tylko się dowie,&lt;br /&gt;
Kto cię stracił. Dziś piękność twą w całej ozdobie&lt;br /&gt;
Widzę i opisuję, bo tęsknię po tobie.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Jak to działa&lt;br /&gt;
Tworzymy plik &amp;lt;tt&amp;gt;wiersz.txt&amp;lt;/tt&amp;gt; otwierając go w trybie do zapisu (z argumentem &amp;lt;tt&amp;gt;'w'&amp;lt;/tt&amp;gt;). Jeśli plik jeszcze nie istniał, to zostaje stworzony pusty, a jeśli już istniał, to jego zawartość zostaje wykasowana w momencie otwarcia.&lt;br /&gt;
Do tego pliku zapisujemy  &amp;lt;tt&amp;gt;tekst&amp;lt;/tt&amp;gt; jako treść.&lt;br /&gt;
&lt;br /&gt;
Następnie otwieramy ten sam plik ponownie, tym razem w trybie do odczytu. Następnie linijka po linijce odczytujemy plik i wypisujemy każdą linijkę.&lt;br /&gt;
&lt;br /&gt;
Program jest bardzo prosty, ale jest tu parę drobiazgów, na które warto zwrócić uwagę:&lt;br /&gt;
# Zmienna &amp;lt;tt&amp;gt;tekst&amp;lt;/tt&amp;gt; jest wielo-linijkowym ciągiem znaków stworzonym przez użycie potrójnego apostrofu &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;'''&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; jako ogranicznika.&lt;br /&gt;
# Bezpośrednio po otwarciu tego napisu jest użyta kontynuacja linii &amp;lt;tt&amp;gt;\&amp;lt;/tt&amp;gt;, po to, by napis miał naturalne wcięcia (czyli ich brak). Gdyby znaku kontynuacji nie było, napis zawierałby dodatkową pustą linjkę na samym początku.&lt;br /&gt;
# Po zapisaniu zmian „wypychamy” je na dysk przez użycie metody &amp;lt;tt&amp;gt;close&amp;lt;/tt&amp;gt;. Normalnie operacje na plikach są wykonywane dopiero wtedy, gdy uzbiera się ich większa ilość. Niemniej, tutaj zaraz chcemy zacząć odczytywać ten sam plik i musimy się upewnić, że nasze zmiany naprawdę znalazły się w pliku zanim zaczniemy ten plik czytać .&lt;br /&gt;
# Iteracja po obiekcie &amp;lt;tt&amp;gt;file&amp;lt;/tt&amp;gt; oznacza iterację po linijkach, co tutaj wykorzystujemy.&lt;br /&gt;
# Każda linijka (zmienna &amp;lt;tt&amp;gt;wers&amp;lt;/tt&amp;gt;) jest zakończona swoim znakiem nowej linii i dlatego wywołujemy &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt; tak, by nie dodało nowego znaku końca linii, czyli z &amp;lt;tt&amp;gt;,&amp;lt;/tt&amp;gt; na końcu.&lt;br /&gt;
# Gdybyśmy nie wywołali &amp;lt;tt&amp;gt;close&amp;lt;/tt&amp;gt;, to zmiany w pliku i tak zostałyby zapisane automatycznie najpóźniej w momencie zakończenia programu. Gdy program kończy swoje działanie, wszystkie zmiany są zapisywane i pliki są zamykane przez system operacyjny.&lt;br /&gt;
=== Więcej o otwieraniu plików ===&lt;br /&gt;
Pliki mogą być otwierane w różny sposób &amp;amp;mdash; mówimy, że są otweirane w danym trybie. Dostępne tryby to:&lt;br /&gt;
* &amp;lt;tt&amp;gt;r&amp;lt;/tt&amp;gt; {{ang|read otwarcie do czytania&lt;br /&gt;
* &amp;lt;tt&amp;gt;w&amp;lt;/tt&amp;gt; {{ang|write otwarcie do pisania, jeśli plik już istnieje to domyślnie kasujemy jego zawartość &lt;br /&gt;
* &amp;lt;tt&amp;gt;a&amp;lt;/tt&amp;gt; {{ang|append otwarcie do dopisywania. W tym trybie jeśli pliku nie było to zostanie utworzony, a jeśli był to nasze wpisy są dodawane na końcu.&lt;br /&gt;
&lt;br /&gt;
Jeśli pominiemy tryb to domyślnie przyjmuje on wartość &amp;lt;tt&amp;gt;r&amp;lt;/tt&amp;gt; (tylko do odczytu).&lt;br /&gt;
&lt;br /&gt;
W niektórych systemach operacyjnych rozróżniane są pliki tekstowe i binarne. Każdy plik można otworzyć w jednym i w drugim trybie, efektem jest nieco inna obsługa plików przez program.&lt;br /&gt;
&lt;br /&gt;
Niemniej otwieranie plików binarnych w trybie tekstowym nie jest dobrym pomysłem. &lt;br /&gt;
&lt;br /&gt;
Różnica między dwoma trybami jest taka, że w trybie &amp;amp;bdquo;tekstowym&amp;amp;rdquo; biblioteka obsługująca odczytywanie z i zapisywanie do pliku w szczególny sposób obsługuje znaki końca linii. W przypadku trybu &lt;br /&gt;
&amp;amp;bdquo;binarnego&amp;amp;rdquo; taka specjalne traktowanie nie ma miejsca i program dostaje dokładnie takie dane jakie odczytał z pliku.&lt;br /&gt;
&lt;br /&gt;
Jak w pliku tekstowym jest zapisany &amp;amp;bdquo;koniec linii&amp;amp;rdquo;? Na kartce początek nowego wiersza oznacza się poprzez umieszczenie pierwszej litery blisko lewego krańca tekstu. W pliku coś takiego nie jest możliwe &amp;amp;mdash; bo każdy plik, również tekstowy jest po prostu ciągiem bajtów. Sytuacja jest podobna do cytowania wierszy w felietonach w gazecie, gdzie znaki nowej linii oznacza się używając kreski:&lt;br /&gt;
  To jest pierwsza linijka/To jest druga linijka.&lt;br /&gt;
W plikach do rozdzielania wierszy używa się pewnej ustalonej sekwencji. Kiedy program natrafi na taki bajt czy bajty w pliku zawierającym tekst, to rozumie się, że jest to koniec poprzedniej i początek następnej linijki.&lt;br /&gt;
&lt;br /&gt;
Wszystko byłoby dobrze, gdyby nie fakt, że w różnych systemach operacyjnych używa się różnych sekwencji do oznaczenia końca linii. W systemach UNIXowych (takich jak Linux czy BSD) używa się pojedynczego bajtu o wartości 0x0a. Na Macintoshach też używa się jednego bajtu, ale o wartości 0x10. Natomiast w systemach Microsoftu używa się dwóch bajtów &amp;amp;mdash; 0x0d 0x0a. &lt;br /&gt;
&lt;br /&gt;
Aby programista nie musiał pamiętać tych wartości, w kodzie Pythona, tak samo jako w C, Perlu i wielu innych językach, &amp;lt;tt&amp;gt;\n&amp;lt;/tt&amp;gt; i &amp;lt;tt&amp;gt;\r&amp;lt;/tt&amp;gt; oznaczają odpowiednio 0x0d i 0x0a. Na dodatek jeśli otworzy się plik w trybie tekstowym, po odczytaniu danych z pliku, wszystkie specyficzne dla danego systemu operacyjnego znaki końca linii są zamieniane na 0x0a. Pozwala to na wygodną obsługę plików tekstowych.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
zera i jedynki w plikach tekstowych mają pewną konkretna interpretację (zgodnie z tablicą ASCII), występuje też w nich specjalna wartość &amp;lt;tt&amp;gt;'\n'&amp;lt;/tt&amp;gt;, która interpretowana jest jako koniec linii tekstu. Domyślnie pliki są traktowane jako tekstowe, aby to zmienić trzeba do trybu otwarcia dodać literkę &amp;lt;tt&amp;gt;b&amp;lt;/tt&amp;gt;.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Przykłady ===&lt;br /&gt;
====Wczytanie danych z pliku tekstowego i wykreślenie sygnału====&lt;br /&gt;
Proszę pobrać plik http://brain.fuw.edu.pl/~jarek/SYGNALY/TF/c4spin.txt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang= python&amp;gt; &lt;br /&gt;
import pylab&lt;br /&gt;
import numpy&lt;br /&gt;
&lt;br /&gt;
fi = open('c4spin.txt')&lt;br /&gt;
x=[]&lt;br /&gt;
for linijka in fi:&lt;br /&gt;
    x.append(int(linijka))&lt;br /&gt;
&lt;br /&gt;
signal = numpy.array(x)    &lt;br /&gt;
pylab.plot(signal/20)&lt;br /&gt;
pylab.show()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
; Jak to działa: &lt;br /&gt;
Otwieramy plik tekstowy &amp;lt;tt&amp;gt;c4spin.txt&amp;lt;/tt&amp;gt;. Każda linijka w tym pliku zawiera jedną próbkę sygnału EEG. W&amp;amp;nbsp;pętli kolejno odczytujemy z&amp;amp;nbsp;pliku  linie tekstu,  interpretujemy je jako liczby całkowite (&amp;lt;tt&amp;gt;int&amp;lt;/tt&amp;gt;), a&amp;amp;nbsp;następnie dodajemy na koniec listy &amp;lt;tt&amp;gt;x&amp;lt;/tt&amp;gt;. Po zakończeniu odczytu z&amp;amp;nbsp; pliku zamykamy go. Dla większej wygody operacji na sygnale dobrze jest przekształcić listę  w&amp;amp;nbsp;tablicę modułu &amp;lt;tt&amp;gt;numpy&amp;lt;/tt&amp;gt;. Teraz łatwo możemy np. skalibrować sygnał. Załóżmy, że dane pochodziły z przetwornika analogowo-cyfrowego, o którym wiemy, że na napięcie 1&amp;amp;nbsp;&amp;amp;micro;V na jego wejściu daje na wyjściu liczbę 20. Zatem żeby wyskalować nasz sygnał w&amp;amp;nbsp;&amp;amp;micro;V trzeba podzielić go przez 20.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Wczytanie danych z pliku tekstowego z użyciem funkcji bibliotecznej====&lt;br /&gt;
W poprzednim przykładzie próbki były wczytywane w pętli &amp;amp;mdash; ale jest też funkcja która&lt;br /&gt;
robi dokładnie to samo.&lt;br /&gt;
&amp;lt;source lang= python&amp;gt;&lt;br /&gt;
import pylab&lt;br /&gt;
import numpy&lt;br /&gt;
&lt;br /&gt;
signal = numpy.loadtxt('c4spin.txt')    &lt;br /&gt;
pylab.plot(signal/20)&lt;br /&gt;
pylab.show()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Te dane mogą być też przechowywane np. w postaci binarnej jako dwubajtowe liczby całkowite (typu &amp;lt;tt&amp;gt;short&amp;lt;/tt&amp;gt;, plik http://brain.fuw.edu.pl/~jarek/SYGNALY/c4spin.bin) lub np. czterobajtowe liczby zmiennoprzecinkowe (typu &amp;lt;tt&amp;gt;single&amp;lt;/tt&amp;gt;, plik http://brain.fuw.edu.pl/~jarek/SYGNALY/c4spinf.bin).&lt;br /&gt;
&lt;br /&gt;
Proszę podejrzeć wszystkie trzy pliki w powłoce systemu poleceniem &amp;lt;tt&amp;gt;less nazwa_pliku&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Następnie proszę napisać program rysujący jednakowe wykresy wczytując dane z każdego z trzech plików.&amp;lt;br&amp;gt; &lt;br /&gt;
Wskazówka: pliki binarne wczytuj funkcją &amp;lt;tt&amp;gt;fromfile&amp;lt;/tt&amp;gt; z modułu numpy.&lt;br /&gt;
&lt;br /&gt;
====Wczytanie danych z pliku binarnego i wykreślenie sygnału====&lt;br /&gt;
Proszę pobrać plik http://brain.fuw.edu.pl/~jarek/SYGNALY/prawahj12 &amp;amp;mdash; są tam zapisane dane: 24 kanały pomiaru (próbkowane z&amp;amp;nbsp;częstością 128&amp;amp;nbsp;Hz), w każdym po 1024 punkty pomiarowe, eksperyment powtórzono 57 razy, zapisano w pliku binarnym jako multipleksowane szesnastobitowe liczby całkowite (&amp;lt;tt&amp;gt;short&amp;lt;/tt&amp;gt;).&lt;br /&gt;
 &lt;br /&gt;
Z pliku proszę wybrać kanał&amp;amp;nbsp;1 i&amp;amp;nbsp;wykreślić pierwsze powtórzenie.&lt;br /&gt;
&amp;lt;source lang= python&amp;gt;&lt;br /&gt;
import pylab&lt;br /&gt;
import numpy&lt;br /&gt;
&lt;br /&gt;
x=numpy.fromfile('prawahj12','short')&lt;br /&gt;
signal = x[0::24]    &lt;br /&gt;
pylab.plot(signal[:1024])&lt;br /&gt;
pylab.show()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inny sposób:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang= python&amp;gt;&lt;br /&gt;
import pylab as p&lt;br /&gt;
import numpy&lt;br /&gt;
&lt;br /&gt;
x=numpy.fromfile('prawahj12','short')&lt;br /&gt;
x=numpy.reshape(x,(57,1024,24))&lt;br /&gt;
p.plot(x[0,:,0])&lt;br /&gt;
p.show()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Wczytanie danych z pliku binarnego i wykreślenie sygnału====&lt;br /&gt;
Ten sam plik co w poprzednim przykładzie:&lt;br /&gt;
http://brain.fuw.edu.pl/~jarek/SYGNALY/prawahj12 &amp;amp;mdash; 24 kanały,&lt;br /&gt;
128 Hz, 57 powtórzeń po 1024 punkty, format liczb: szesnastobitowe całkowite. &lt;br /&gt;
Z pliku tego wybieramy kanał&amp;amp;nbsp;1 i&amp;amp;nbsp;rysujemy na wykresie pierwsze powtórzenie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang= python&amp;gt;&lt;br /&gt;
import pylab&lt;br /&gt;
import numpy&lt;br /&gt;
&lt;br /&gt;
x = numpy.fromfile('prawahj12','short')&lt;br /&gt;
signal = x[0::24]    &lt;br /&gt;
pylab.plot(signal[:1024])&lt;br /&gt;
pylab.show()&lt;br /&gt;
&lt;br /&gt;
x.reshape(-1, 24)&lt;br /&gt;
pylab.figure()&lt;br /&gt;
pylab.plot(x[0:1024,0])&lt;br /&gt;
pylab.show()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pickle'owanie i podobne czynności ==&lt;br /&gt;
===O module pickle===&lt;br /&gt;
Standardowa biblioteka Pythona zawiera moduł &amp;lt;tt&amp;gt;pickle&amp;lt;/tt&amp;gt; (słowo to oznacza sposób konserwowania m. in. ogórków). Służy on do zapisywania dowolnych obiektów Pythona w pliku, i&amp;amp;nbsp;odwrotnie, do późniejszego oczytywania i rekreacji obiektów.&lt;br /&gt;
W języku angielskim mówi się o ''persistent storage'' („pamięci trwałej”), by podkreślić, że obiekty są zachowane w sposób trwały, w przeciwieństwie do obiektów w programie, które znikają po jego zakończeniu.&lt;br /&gt;
&lt;br /&gt;
;Przykład:&lt;br /&gt;
&amp;lt;source lang= python&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding:utf-8; -*-&lt;br /&gt;
# Filename: pickling.py&lt;br /&gt;
import pickle&lt;br /&gt;
&lt;br /&gt;
# the name of the file where we will store the object&lt;br /&gt;
trwala_lista_zakupow = 'lista_zakupow.data'&lt;br /&gt;
# lista rzeczy do kupienia&lt;br /&gt;
lista_zakupow = ['jabłka', 'ziemniaki', 'pomidory']&lt;br /&gt;
&lt;br /&gt;
# zapisanie do pliku&lt;br /&gt;
f = open(trwala_lista_zakupow, 'wb')&lt;br /&gt;
pickle.dump(lista_zakupow, f)&lt;br /&gt;
f.close()&lt;br /&gt;
&lt;br /&gt;
# usunięcie zmiennej 'nie-trwałej'&lt;br /&gt;
del lista_zakupow&lt;br /&gt;
&lt;br /&gt;
# odzyskanie zmiennej&lt;br /&gt;
f = open(trwala_lista_zakupow, 'rb')&lt;br /&gt;
lista_zakupow = pickle.load(f)&lt;br /&gt;
for rzecz in lista_zakupow:&lt;br /&gt;
  print rzecz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- pętla for bo rep(list) nie wypisuje polskich znaczków --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='shell_example'&amp;gt;&lt;br /&gt;
$ python pickling.py&lt;br /&gt;
jabłka&lt;br /&gt;
ziemniaki&lt;br /&gt;
pomidory&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Jak to działa&lt;br /&gt;
Aby zapisać dane „zakonserwowane” do pliku, otwieramy plik w trybie do zapisu. Parametr &amp;lt;tt&amp;gt;'wb'&amp;lt;/tt&amp;gt; oznacza ''write''-''binary'', czyli dodatkowo mówimy, że dane mają być zapisane do pliku dokładnie tak, jak je podajemy. W przypadku wersji Python 2.x brak tego parametru nie ma znaczenia, ale nie szkodzi. Natomiast w nowszych wersjach Pythona (3.x), jest on potrzebny. Właściwego zapisu dokonujemy funkcją &amp;lt;tt&amp;gt;pickle.dump&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aby odczytać „zakonserwowane” dane z pliku, otwieramy plik w trybie do odczytu. Funkcja &amp;lt;tt&amp;gt;pickle.load&amp;lt;/tt&amp;gt; pozwala nam odczytać dokładnie to co zapisaliśmy.&lt;br /&gt;
&lt;br /&gt;
=== Zapisywanie danych w numpy ===&lt;br /&gt;
W module numpy dostępnych jest kilka funkcji obsługujących wygodny zapis i odczytywanie obiektów, a w szczególności macierzy: [http://docs.scipy.org/doc/numpy/reference/generated/numpy.save.html#numpy.save save],[http://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html#numpy.savetxt savetxt]. Poniżej opiszemy nieco dokładniej funkcję &amp;lt;tt&amp;gt;numpy.savez&amp;lt;/tt&amp;gt;.  Jej składnia jest następująca:&lt;br /&gt;
&amp;lt;source lang= python&amp;gt; &lt;br /&gt;
numpy.savez(plik, *argumenty, **argumenty_nazwane)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkcja ta umożliwia zapis kilku macierzy do jednego spakowanego archiwum w formacie &amp;lt;tt&amp;gt;.npz&amp;lt;/tt&amp;gt;.    Jeśli wywołamy funkcję z argumentami nazwanymi nazwy to nazwy te zostaną zapisane razem z zawartością macierzy. Jeśli nie podamy nazw, tzn wywołamy funkcję &amp;lt;tt&amp;gt;numpy.savez&amp;lt;/tt&amp;gt; tylko z lista zmiennych do zapisania to zostaną one zapisane z domyślnymi nazwami &amp;lt;tt&amp;gt;arr_0, arr_1, ...&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parametry:	&lt;br /&gt;
&lt;br /&gt;
;plik: napis zawierający nazwę pliku lub obiekt plik (wytworzony np. przez wywołanie funkcji &amp;lt;tt&amp;gt;open&amp;lt;/tt&amp;gt;). Do nazwy pliku zostanie dodane rozszerzenie &amp;lt;tt&amp;gt;.npz&amp;lt;/tt&amp;gt; (chyba, że już wcześniej nazwa pliku je zawierała)&lt;br /&gt;
;argumenty: wszystkie pozostałe argumenty na liście po nazwie pliku są traktowane jako zmienne do zapisania, mogą to być też dowolne wyrażenia.  Argumenty przekazane na tej liście będą zapisane z domyślnymi nazwami: &amp;lt;tt&amp;gt;arr_0&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;arr_1&amp;lt;/tt&amp;gt;, itd. &lt;br /&gt;
;argumenty_nazwane: argumenty te przekazywane są jako pary &amp;lt;tt&amp;gt;klucz=wartość&amp;lt;/tt&amp;gt;. Zmienna &amp;lt;tt&amp;gt;wartość&amp;lt;/tt&amp;gt; zostanie zapisana razem z nazwą &amp;lt;tt&amp;gt;klucz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;Uwaga:&lt;br /&gt;
Format pliku ''.npz'' to spakowane archiwum. Każdy plik w tym archiwum przechowuje jedna z zapisywanych zmiennych w formacie ''.npy'' i  ma nazwę zmiennej, którą przechowuje.  &lt;br /&gt;
&lt;br /&gt;
Do wczytywania plików ''.npz'' służy funkcja &amp;lt;tt&amp;gt;numpy.load&amp;lt;/tt&amp;gt;. Obiekt, który ona zwraca zawiera pole &amp;lt;tt&amp;gt;files&amp;lt;/tt&amp;gt; zawierające listę dostępnych kluczy. Klucze te mogą być użyte do indeksowania przechowywanych w tym obiekcie zmiennych.&lt;br /&gt;
&lt;br /&gt;
====Przykład ====     &lt;br /&gt;
&amp;lt;source lang='shell_example'&amp;gt;&lt;br /&gt;
import numpy as n&lt;br /&gt;
x = n.arange(10)&lt;br /&gt;
y = n.sin(x)&lt;br /&gt;
#użycie  savez z  *argumentami, macierze zapisywane są z domyślnymi nazwami         &lt;br /&gt;
n.savez('plik_testowy', x, y)&lt;br /&gt;
&lt;br /&gt;
wczytane = n.load('plik_testowy1.npz')&lt;br /&gt;
wczytane.files&lt;br /&gt;
    ['arr_1', 'arr_0']&lt;br /&gt;
wczytane['arr_0']&lt;br /&gt;
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])&lt;br /&gt;
#użycie savez z **argumentami_nazwanymi, macierze zapisywane są z nazwami podanymi jako klucze.&lt;br /&gt;
n.savez('plik_testowy2', x=x, y=y)&lt;br /&gt;
wczytane = n.load('plik_testowy2.npz')&lt;br /&gt;
wczytane.files&lt;br /&gt;
 ['y', 'x']&lt;br /&gt;
wczytane['x']&lt;br /&gt;
 array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Pliki matlabowe===&lt;br /&gt;
W pracy z programem [http://www.mathworks.com/ Matlab firmy Mathworks]&lt;br /&gt;
można zachować zmienne z bieżącego środowiska pracy do pliku.&lt;br /&gt;
Możliwości są bardzo podobne do &amp;lt;tt&amp;gt;numpy.savez&amp;lt;/tt&amp;gt;. Format jest natomiast zupełnie inny.&lt;br /&gt;
&lt;br /&gt;
Pakiet [[Scipy]] pozwala na zapis i odczyt takich plików, mają one zwyczajową końcówkę &amp;lt;tt&amp;gt;.mat&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang= python&amp;gt;&lt;br /&gt;
import scipy.io as io&lt;br /&gt;
&lt;br /&gt;
D = io.loadmat('test1.mat')&lt;br /&gt;
# D zawiera słownik {zmienna:wartość}&lt;br /&gt;
&lt;br /&gt;
io.savemat('test2.mat', {'nowa_zmienna': 666})&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scipy nie obsługuje wszystkich wersji format plików matlabowych i nie wszystkie struktury danych z Matlaba daje się jednoznacznie i czysto przełożyć na struktury Pythonowe, więc funkcje &amp;lt;tt&amp;gt;loadmat&amp;lt;/tt&amp;gt; i &amp;lt;tt&amp;gt;savemat&amp;lt;/tt&amp;gt; mają sporo opcji regulujących ten proces.&lt;br /&gt;
(zob. &amp;lt;tt&amp;gt;help(io.loadmat)&amp;lt;/tt&amp;gt; lub&lt;br /&gt;
[http://docs.scipy.org/doc/scipy/reference/generated/scipy.io.loadmat.html#scipy.io.loadmat docs.scipy.org])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  LocalWords:  matlabowe Matlab Pickle pickle Scipy Matlabowy&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Porównanie danych „świeżych” i „konserwowych” ===&lt;br /&gt;
Powyżej zostały przedstawione dwa mechanizmy zachowywania danych w postaci obiektów bezpośrednio do plików. Matlabowy format '.mat'&lt;br /&gt;
jest przewidziany do przechowywania struktur danych z Matlaba, a ponieważ menażeria obiektów w Pythonie jest bogatsza, to nie wszystko da się zachować. Niemniej założenie jest takie samo — by zapisać obiekty jako ciąg bajtów w pliku. Przecież już normalnie można dane odczytywać z i zapisywać do plików, więc kiedy programista powinien zdecydować się na ''picklowanie''?&lt;br /&gt;
&lt;br /&gt;
Kiedy zapisujemy dane do pliku, używamy pewnego określonego formatu. Takim formatem może być np. XML, czy jakaś odmiana tzw. CSV (Comma Seperated Values). Takim formatem jest też ''pickle'' czy ''mat-file''. Istotna różnica jest taka, że w przypadku formatów przeznaczonego do przechowywania stanu z danego języka, nie ma osobnej warstwy tłumaczącej, która bierze dane odczytane z pliku i wywołuje funkcje konstruujące obiekty. Ponieważ dane są w formacie tak blisko powiązanym z gotowymi obiektami, to sam moduł pickle może zrekonstruować obiekty.&lt;br /&gt;
&lt;br /&gt;
To którego formatu należy użyć, zależy od celu w jakim dane zapisujemy i od tego z kim chcemy te dane wymieniać.&lt;br /&gt;
&lt;br /&gt;
O formacie ''pickle'' można powiedzieć, że:&lt;br /&gt;
* Służy tylko do wymiany pomiędzy różnymi programami w Pythonie.&lt;br /&gt;
Wynika to z tego, że zarówno implementacja jest dostępna tylko na Pythona, jak i z tego, że sam format jest bezpośrednio związany z pythonowymi strukturami danych.&lt;br /&gt;
* Można go używać do wymiany pomiędzy różnymi wersjami Pythona, ale&lt;br /&gt;
* nie nadaje się do naprawdę trwałego przechowywania danych.&lt;br /&gt;
Wynika to z tego, że&lt;br /&gt;
wersja Pythona za rok czy dwa na pewno te dane przeczyta, ale nie ma pewności czy za 20 lat się uda.&lt;br /&gt;
* Jeśli ''pickluje'' się obiekty, które nie należą do podstawowego zestawu takiego jak napisy, liczby, listy, słowniki, to zachowane dane są silnie związane z używaną przez nas hierarchią klas.&lt;br /&gt;
&lt;br /&gt;
Można pokrótce powiedzieć, że ''picklowanie'' to użyteczny mechanizm roboczy, na teraz, do komunikacji w określonym ekosystemie programów. Do komunikacji z innymi ludźmi, czy przetrzymywania danych archiwalnych, ''pickle'' się nie nadaje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://brain.fuw.edu.pl/~moira/3/dane.txt dane.txt]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://brain.fuw.edu.pl/~moira/3/mymat.txt mymat.txt]&lt;/div&gt;</summary>
		<author><name>Jarekz</name></author>
		
	</entry>
</feed>