Skip to content

Commit 97e9d16

Browse files
added 20th Python tip
1 parent 996f5d3 commit 97e9d16

File tree

9 files changed

+66
-6
lines changed

9 files changed

+66
-6
lines changed

Diff for: README.md

+1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ I'm addicted to reading fantasy/sci-fi books, so I have a [blog](https://learnby
6161

6262
## Tips
6363

64+
* [Python tip 20: saving and loading json](https://learnbyexample.github.io/tips/python-tip-20/)
6465
* [Vim tip 18: moving within long lines](https://learnbyexample.github.io/tips/vim-tip-18/)
6566
* [CLI tip 19: extended globs](https://learnbyexample.github.io/tips/cli-tip-19/)
6667
* [Python tip 19: manipulating string case](https://learnbyexample.github.io/tips/python-tip-19/)

Diff for: atom.xml

+38-1
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,45 @@
55
<link href="https://learnbyexample.github.io/atom.xml" rel="self" type="application/atom+xml"/>
66
<link href="https://learnbyexample.github.io"/>
77
<generator uri="https://www.getzola.org/">Zola</generator>
8-
<updated>2022-11-29T00:00:00+00:00</updated>
8+
<updated>2022-12-07T00:00:00+00:00</updated>
99
<id>https://learnbyexample.github.io/atom.xml</id>
10+
<entry xml:lang="en">
11+
<title>Python tip 20: saving and loading json</title>
12+
<published>2022-12-07T00:00:00+00:00</published>
13+
<updated>2022-12-07T00:00:00+00:00</updated>
14+
<link rel="alternate" href="https://learnbyexample.github.io/tips/python-tip-20/" type="text/html"/>
15+
<id>https://learnbyexample.github.io/tips/python-tip-20/</id>
16+
<content type="html">&lt;p&gt;JSON (JavaScript Object Notation) is one of the ways you can store and retrieve data necessary for functioning of an application. For example, my projects &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;learnbyexample&#x2F;py_regular_expressions&#x2F;tree&#x2F;master&#x2F;interactive_exercises&quot;&gt;Python regex exercises&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;learnbyexample&#x2F;TUI-apps&#x2F;blob&#x2F;main&#x2F;CLI-Exercises&quot;&gt;Linux CLI text processing exercises&lt;&#x2F;a&gt; need to load questions and save user progress. You might wonder why not just a plain text file? I needed &lt;code&gt;dict&lt;&#x2F;code&gt; in the code anyway and JSON offered seamless transition. Also, this arrangement avoided having to write extra code and test it for potential parsing issues.&lt;&#x2F;p&gt;
17+
&lt;p&gt;The &lt;code&gt;json&lt;&#x2F;code&gt; builtin module is handy for such purposes. Here&#x27;s an example of saving a &lt;code&gt;dict&lt;&#x2F;code&gt; object:&lt;&#x2F;p&gt;
18+
&lt;pre data-lang=&quot;python&quot; style=&quot;background-color:#f5f5f5;color:#1f1f1f;&quot; class=&quot;language-python &quot;&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&amp;gt;&amp;gt;&amp;gt; import &lt;&#x2F;span&gt;&lt;span&gt;json
19+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;&#x2F;span&gt;&lt;span&gt;marks &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;= &lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;#39;Rahul&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;86&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;#39;Ravi&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;92&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;#39;Rohit&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;75&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;#39;Rajan&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;79&lt;&#x2F;span&gt;&lt;span&gt;}
20+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&amp;gt;&amp;gt;&amp;gt; with &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b39f04;&quot;&gt;open&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;#39;marks.json&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;#39;w&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;as &lt;&#x2F;span&gt;&lt;span&gt;f:
21+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;... &lt;&#x2F;span&gt;&lt;span&gt;json.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#5597d6;&quot;&gt;dump&lt;&#x2F;span&gt;&lt;span&gt;(marks, f, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#5597d6;&quot;&gt;indent&lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;)
22+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;...
23+
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
24+
&lt;p&gt;In the above example, &lt;code&gt;indent&lt;&#x2F;code&gt; is used for pretty printing. Here&#x27;s how the file looks like:&lt;&#x2F;p&gt;
25+
&lt;pre data-lang=&quot;ruby&quot; style=&quot;background-color:#f5f5f5;color:#1f1f1f;&quot; class=&quot;language-ruby &quot;&gt;&lt;code class=&quot;language-ruby&quot; data-lang=&quot;ruby&quot;&gt;&lt;span&gt;$ cat marks.json
26+
&lt;&#x2F;span&gt;&lt;span&gt;{
27+
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;quot;Rahul&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;86&lt;&#x2F;span&gt;&lt;span&gt;,
28+
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;quot;Ravi&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;92&lt;&#x2F;span&gt;&lt;span&gt;,
29+
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;quot;Rohit&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;75&lt;&#x2F;span&gt;&lt;span&gt;,
30+
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;quot;Rajan&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;79
31+
&lt;&#x2F;span&gt;&lt;span&gt;}
32+
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
33+
&lt;p&gt;And here&#x27;s an example of loading a JSON file:&lt;&#x2F;p&gt;
34+
&lt;pre data-lang=&quot;python&quot; style=&quot;background-color:#f5f5f5;color:#1f1f1f;&quot; class=&quot;language-python &quot;&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&amp;gt;&amp;gt;&amp;gt; with &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b39f04;&quot;&gt;open&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;#39;marks.json&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;as &lt;&#x2F;span&gt;&lt;span&gt;f:
35+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;... &lt;&#x2F;span&gt;&lt;span&gt;marks &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;= &lt;&#x2F;span&gt;&lt;span&gt;json.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#5597d6;&quot;&gt;load&lt;&#x2F;span&gt;&lt;span&gt;(f)
36+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;...
37+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;&#x2F;span&gt;&lt;span&gt;marks
38+
&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;#39;Rahul&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;86&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;#39;Ravi&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;92&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;#39;Rohit&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;75&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;#39;Rajan&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;79&lt;&#x2F;span&gt;&lt;span&gt;}
39+
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
40+
&lt;p&gt;&lt;img src=&quot;&#x2F;images&#x2F;info.svg&quot; alt=&quot;info&quot; &#x2F;&gt; See &lt;a href=&quot;https:&#x2F;&#x2F;docs.python.org&#x2F;3&#x2F;library&#x2F;json.html&quot;&gt;docs.python: json&lt;&#x2F;a&gt; for documentation, more examples, other methods, caveats and so on.&lt;&#x2F;p&gt;
41+
&lt;p&gt;&lt;strong&gt;Video demo&lt;&#x2F;strong&gt;:&lt;&#x2F;p&gt;
42+
&lt;p align=&quot;center&quot;&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; loading=&quot;lazy&quot; src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;Fd28UTqcU3k&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;&#x2F;iframe&gt;&lt;&#x2F;p&gt;
43+
&lt;br&gt;
44+
&lt;p&gt;&lt;img src=&quot;&#x2F;images&#x2F;info.svg&quot; alt=&quot;info&quot; &#x2F;&gt; See also my &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;learnbyexample&#x2F;100_page_python_intro&quot;&gt;100 Page Python Intro&lt;&#x2F;a&gt; ebook.&lt;&#x2F;p&gt;
45+
</content>
46+
</entry>
1047
<entry xml:lang="en">
1148
<title>Vim tip 18: moving within long lines</title>
1249
<published>2022-11-29T00:00:00+00:00</published>

Diff for: sitemap.xml

+4
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,10 @@
524524
<loc>https://learnbyexample.github.io/tips/python-tip-2/</loc>
525525
<lastmod>2022-05-16</lastmod>
526526
</url>
527+
<url>
528+
<loc>https://learnbyexample.github.io/tips/python-tip-20/</loc>
529+
<lastmod>2022-12-07</lastmod>
530+
</url>
527531
<url>
528532
<loc>https://learnbyexample.github.io/tips/python-tip-3/</loc>
529533
<lastmod>2022-05-16</lastmod>

Diff for: tags/index.html

+1-1
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)