221 lines
15 KiB
HTML
221 lines
15 KiB
HTML
|
|
<!DOCTYPE html>
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<title>sections.section_01.csv_example — Python Forensics Handbook 20190527 documentation</title>
|
|
<link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
|
|
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
|
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
|
|
<script type="text/javascript" src="../../../_static/jquery.js"></script>
|
|
<script type="text/javascript" src="../../../_static/underscore.js"></script>
|
|
<script type="text/javascript" src="../../../_static/doctools.js"></script>
|
|
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
|
<link rel="index" title="Index" href="../../../genindex.html" />
|
|
<link rel="search" title="Search" href="../../../search.html" />
|
|
|
|
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
|
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
|
|
|
</head><body>
|
|
|
|
|
|
<div class="document">
|
|
<div class="documentwrapper">
|
|
<div class="bodywrapper">
|
|
|
|
|
|
<div class="body" role="main">
|
|
|
|
<h1>Source code for sections.section_01.csv_example</h1><div class="highlight"><pre>
|
|
<span></span><span class="sd">"""Example for writing datasets into CSV files.</span>
|
|
|
|
<span class="sd">Demonstrates source datasets comprised of lists of dictionaries</span>
|
|
<span class="sd">and lists of lists as separate functions. Example data is</span>
|
|
<span class="sd">provided in line and will generate two identical CSVs as output.</span>
|
|
|
|
<span class="sd">Example Usage:</span>
|
|
|
|
<span class="sd"> ``$ python csv_example.py``</span>
|
|
|
|
<span class="sd">References:</span>
|
|
|
|
<span class="sd"> https://docs.python.org/3/library/csv.html</span>
|
|
<span class="sd"> https://docs.python.org/3/library/os.html</span>
|
|
|
|
<span class="sd">"""</span>
|
|
|
|
<span class="kn">import</span> <span class="nn">csv</span>
|
|
|
|
<span class="sd">"""</span>
|
|
<span class="sd">Copyright 2019 Chapin Bryce</span>
|
|
|
|
<span class="sd">Permission is hereby granted, free of charge, to any person</span>
|
|
<span class="sd">obtaining a copy of this software and associated documentation</span>
|
|
<span class="sd">files (the "Software"), to deal in the Software without</span>
|
|
<span class="sd">restriction, including without limitation the rights to use, copy,</span>
|
|
<span class="sd">modify, merge, publish, distribute, sublicense, and/or sell copies</span>
|
|
<span class="sd">of the Software, and to permit persons to whom the Software is</span>
|
|
<span class="sd">furnished to do so, subject to the following conditions:</span>
|
|
|
|
<span class="sd">The above copyright notice and this permission notice shall be</span>
|
|
<span class="sd">included in all copies or substantial portions of the Software.</span>
|
|
|
|
<span class="sd">THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
|
|
<span class="sd">EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES</span>
|
|
<span class="sd">OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
|
|
<span class="sd">NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT</span>
|
|
<span class="sd">HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,</span>
|
|
<span class="sd">WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span>
|
|
<span class="sd">OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span>
|
|
<span class="sd">DEALINGS IN THE SOFTWARE.</span>
|
|
<span class="sd">"""</span>
|
|
|
|
<span class="n">__author__</span> <span class="o">=</span> <span class="s1">'Chapin Bryce'</span>
|
|
<span class="n">__date__</span> <span class="o">=</span> <span class="mi">20190527</span>
|
|
<span class="n">__license__</span> <span class="o">=</span> <span class="s1">'MIT Copyright 2019 Chapin Bryce'</span>
|
|
<span class="n">__desc__</span> <span class="o">=</span> <span class="s1">'''Sample script to write to CSV files.'''</span>
|
|
<span class="n">__docs__</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="s1">'https://docs.python.org/3/library/csv.html'</span><span class="p">,</span>
|
|
<span class="s1">'https://docs.python.org/3/library/os.html'</span>
|
|
<span class="p">]</span>
|
|
|
|
|
|
<div class="viewcode-block" id="write_csv_dicts"><a class="viewcode-back" href="../../../section1.html#sections.section_01.csv_example.write_csv_dicts">[docs]</a><span class="k">def</span> <span class="nf">write_csv_dicts</span><span class="p">(</span><span class="n">outfile</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">headers</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="sd">"""Writes a list of dictionaries to a CSV file.</span>
|
|
|
|
<span class="sd"> Arguments:</span>
|
|
<span class="sd"> outfile (str): Path to output file</span>
|
|
<span class="sd"> data (list): List of dictionaries to write to file</span>
|
|
<span class="sd"> headers (list): Header row to use. If empty, will use the</span>
|
|
<span class="sd"> first dictionary in the `data` list.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">headers</span><span class="p">:</span>
|
|
<span class="c1"># Use the first line of data</span>
|
|
<span class="n">headers</span> <span class="o">=</span> <span class="p">[</span><span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">()]</span>
|
|
|
|
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">outfile</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">,</span> <span class="n">newline</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> <span class="k">as</span> <span class="n">open_file</span><span class="p">:</span>
|
|
<span class="c1"># Write only provided headers, ignore others</span>
|
|
<span class="n">csvfile</span> <span class="o">=</span> <span class="n">csv</span><span class="o">.</span><span class="n">DictWriter</span><span class="p">(</span><span class="n">open_file</span><span class="p">,</span> <span class="n">headers</span><span class="p">,</span>
|
|
<span class="n">extrasaction</span><span class="o">=</span><span class="s1">'ignore'</span><span class="p">)</span>
|
|
<span class="n">csvfile</span><span class="o">.</span><span class="n">writeheader</span><span class="p">()</span>
|
|
<span class="n">csvfile</span><span class="o">.</span><span class="n">writerows</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="write_csv_lists"><a class="viewcode-back" href="../../../section1.html#sections.section_01.csv_example.write_csv_lists">[docs]</a><span class="k">def</span> <span class="nf">write_csv_lists</span><span class="p">(</span><span class="n">outfile</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">headers</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="sd">"""Writes a list of lists to a CSV file.</span>
|
|
|
|
<span class="sd"> Arguments:</span>
|
|
<span class="sd"> outfile (str): Path to output file</span>
|
|
<span class="sd"> data (list): List of lists to write to file</span>
|
|
<span class="sd"> headers (list): Header row to use. If empty, will use the</span>
|
|
<span class="sd"> first list in the `data` list.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">outfile</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">,</span> <span class="n">newline</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> <span class="k">as</span> <span class="n">open_file</span><span class="p">:</span>
|
|
<span class="c1"># Write only provided headers, ignore others</span>
|
|
<span class="n">csvfile</span> <span class="o">=</span> <span class="n">csv</span><span class="o">.</span><span class="n">writer</span><span class="p">(</span><span class="n">open_file</span><span class="p">)</span>
|
|
<span class="k">for</span> <span class="n">count</span><span class="p">,</span> <span class="n">entry</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
<span class="c1"># If headers are defined, write them, otherwise</span>
|
|
<span class="c1"># continue as they will be written anyways</span>
|
|
<span class="k">if</span> <span class="n">headers</span><span class="p">:</span>
|
|
<span class="n">csvfile</span><span class="o">.</span><span class="n">writerow</span><span class="p">(</span><span class="n">headers</span><span class="p">)</span>
|
|
<span class="n">csvfile</span><span class="o">.</span><span class="n">writerow</span><span class="p">(</span><span class="n">entry</span><span class="p">)</span></div>
|
|
|
|
<span class="n">sample_dict_data</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="p">{</span><span class="s1">'id'</span><span class="p">:</span> <span class="s1">'0'</span><span class="p">,</span> <span class="s1">'city'</span><span class="p">:</span> <span class="s1">'Boston'</span><span class="p">,</span> <span class="s1">'state'</span><span class="p">:</span> <span class="s1">'MA'</span><span class="p">,</span>
|
|
<span class="s1">'country'</span><span class="p">:</span> <span class="s1">'USA'</span><span class="p">},</span>
|
|
<span class="p">{</span><span class="s1">'id'</span><span class="p">:</span> <span class="s1">'1'</span><span class="p">,</span> <span class="s1">'city'</span><span class="p">:</span> <span class="s1">'New York'</span><span class="p">,</span> <span class="s1">'state'</span><span class="p">:</span> <span class="s1">'NY'</span><span class="p">,</span>
|
|
<span class="s1">'country'</span><span class="p">:</span> <span class="s1">'USA'</span><span class="p">},</span>
|
|
<span class="p">{</span><span class="s1">'id'</span><span class="p">:</span> <span class="s1">'2'</span><span class="p">,</span> <span class="s1">'city'</span><span class="p">:</span> <span class="s1">'Washington'</span><span class="p">,</span> <span class="s1">'state'</span><span class="p">:</span> <span class="s1">'DC'</span><span class="p">,</span>
|
|
<span class="s1">'country'</span><span class="p">:</span> <span class="s1">'USA'</span><span class="p">},</span>
|
|
<span class="p">]</span>
|
|
|
|
<span class="n">write_csv_dicts</span><span class="p">(</span><span class="s1">'dict_test.csv'</span><span class="p">,</span> <span class="n">sample_dict_data</span><span class="p">)</span>
|
|
|
|
<span class="n">header_row</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'id'</span><span class="p">,</span> <span class="s1">'city'</span><span class="p">,</span> <span class="s1">'state'</span><span class="p">,</span> <span class="s1">'country'</span><span class="p">]</span>
|
|
<span class="n">sample_list_data</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="p">[</span><span class="s1">'0'</span><span class="p">,</span> <span class="s1">'Boston'</span><span class="p">,</span> <span class="s1">'MA'</span><span class="p">,</span> <span class="s1">'USA'</span><span class="p">],</span>
|
|
<span class="p">[</span><span class="s1">'1'</span><span class="p">,</span> <span class="s1">'New York'</span><span class="p">,</span> <span class="s1">'NY'</span><span class="p">,</span> <span class="s1">'USA'</span><span class="p">],</span>
|
|
<span class="p">[</span><span class="s1">'2'</span><span class="p">,</span> <span class="s1">'Washington'</span><span class="p">,</span> <span class="s1">'DC'</span><span class="p">,</span> <span class="s1">'USA'</span><span class="p">]</span>
|
|
<span class="p">]</span>
|
|
|
|
<span class="n">write_csv_lists</span><span class="p">(</span><span class="s1">'list_test.csv'</span><span class="p">,</span> <span class="n">sample_list_data</span><span class="p">,</span>
|
|
<span class="n">headers</span><span class="o">=</span><span class="n">header_row</span><span class="p">)</span>
|
|
</pre></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
|
<div class="sphinxsidebarwrapper">
|
|
<h1 class="logo"><a href="../../../index.html">Python Forensics Handbook</a></h1>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h3>Navigation</h3>
|
|
<p class="caption"><span class="caption-text">Contents:</span></p>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../../../section1.html">Section 1 - Essential Scripts</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../../../section1.html#module-sections.section_01.argparse_example">Section 1.1 - Argparse Example</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../../../section1.html#module-sections.section_01.logging_example">Section 1.2 - Logging Example</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../../../section1.html#module-sections.section_01.csv_example">Section 1.3 - CSV Example</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../../../section1.html#indices-and-tables">Indices and tables</a></li>
|
|
</ul>
|
|
|
|
<div class="relations">
|
|
<h3>Related Topics</h3>
|
|
<ul>
|
|
<li><a href="../../../index.html">Documentation overview</a><ul>
|
|
<li><a href="../../index.html">Module code</a><ul>
|
|
</ul></li>
|
|
</ul></li>
|
|
</ul>
|
|
</div>
|
|
<div id="searchbox" style="display: none" role="search">
|
|
<h3>Quick search</h3>
|
|
<div class="searchformwrapper">
|
|
<form class="search" action="../../../search.html" method="get">
|
|
<input type="text" name="q" />
|
|
<input type="submit" value="Go" />
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">$('#searchbox').show(0);</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
</div>
|
|
<div class="clearer"></div>
|
|
</div>
|
|
<div class="footer">
|
|
©2019, Chapin Bryce.
|
|
|
|
|
|
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.0.1</a>
|
|
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</body>
|
|
</html> |