mirror of
https://github.com/redoules/redoules.github.io.git
synced 2025-12-12 15:59:34 +00:00
241 lines
12 KiB
HTML
241 lines
12 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="fr">
|
||
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
|
||
<meta name="description" content="Data Science for Political and Social Phenomena">
|
||
<meta name="author" content="Guillaume Redoulès">
|
||
<link rel="icon" href="../favicon.ico">
|
||
|
||
<title>Opening a file with python - Python</title>
|
||
|
||
<!-- JQuery -->
|
||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
|
||
<script>
|
||
window.jQuery || document.write('<script src="../theme/js/jquery.min.js"><\/script>')
|
||
</script>
|
||
|
||
<!-- Bootstrap core CSS -->
|
||
<link rel="stylesheet" href="../theme/css/bootstrap.css" />
|
||
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
||
<link rel="stylesheet" type="text/css" href="../theme/css/ie10-viewport-bug-workaround.css" />
|
||
<!-- Custom styles for this template -->
|
||
<link rel="stylesheet" type="text/css" href="../theme/css/style.css" />
|
||
<link rel="stylesheet" type="text/css" href="../theme/css/notebooks.css" />
|
||
<link href='https://fonts.googleapis.com/css?family=PT+Serif:400,700|Roboto:400,500,700' rel='stylesheet' type='text/css'>
|
||
|
||
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
||
<!--[if lt IE 9]>
|
||
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||
<![endif]-->
|
||
|
||
|
||
<meta name="tags" content="Basics" />
|
||
|
||
|
||
</head>
|
||
|
||
<body>
|
||
|
||
<div class="navbar navbar-fixed-top">
|
||
<div class="container">
|
||
<div class="navbar-header">
|
||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
</button>
|
||
<a class="navbar-brand" href="..">Guillaume Redoulès</a>
|
||
</div>
|
||
<div class="navbar-collapse collapse" id="searchbar">
|
||
|
||
<ul class="nav navbar-nav navbar-right">
|
||
<li class="dropdown">
|
||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">About<span class="caret"></span></a>
|
||
<ul class="dropdown-menu">
|
||
<li><a href="../pages/about.html">About Guillaume</a></li>
|
||
<li><a href="https://github.com/redoules">GitHub</a></li>
|
||
<li><a href="https://www.linkedin.com/in/guillaume-redoul%C3%A8s-33923860/">LinkedIn</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="dropdown">
|
||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Data Science<span class="caret"></span></a>
|
||
<ul class="dropdown-menu">
|
||
<li><a href="..#Blog">Blog</a></li>
|
||
<li><a href="..#Python">Python</a></li>
|
||
<li><a href="..#Bash">Bash</a></li>
|
||
<li><a href="..#SQL">SQL</a></li>
|
||
<li><a href="..#Mathematics">Mathematics</a></li>
|
||
<li><a href="..#Machine_Learning">Machine Learning</a></li>
|
||
<li><a href="..#Projects">Projects</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="dropdown">
|
||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Projects<span class="caret"></span></a>
|
||
<ul class="dropdown-menu">
|
||
<li><a href="https://github.com/redoules/redoules.github.io">Notes (Github)</a></li>
|
||
</ul>
|
||
</li>
|
||
|
||
<!--<li class="dropdown">
|
||
<a href="../feeds/blog.rss.xml">Blog RSS</a>
|
||
</li>-->
|
||
|
||
|
||
</ul>
|
||
|
||
<form class="navbar-form" action="../search.html" onsubmit="return validateForm(this.elements['q'].value);">
|
||
<div class="form-group" style="display:inline;">
|
||
<div class="input-group" style="display:table;">
|
||
<span class="input-group-addon" style="width:1%;"><span class="glyphicon glyphicon-search"></span></span>
|
||
<input class="form-control search-query" name="q" id="tipue_search_input" placeholder="e.g. scikit KNN, pandas merge" required autocomplete="off" type="text">
|
||
</div>
|
||
</div>
|
||
</form>
|
||
|
||
</div>
|
||
<!--/.nav-collapse -->
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<!-- end of header section -->
|
||
<div class="container">
|
||
<!-- <div class="alert alert-warning" role="alert">
|
||
Did you find this page useful? Please do me a quick favor and <a href="#" class="alert-link">endorse me for data science on LinkedIn</a>.
|
||
</div> -->
|
||
<section id="content" class="body">
|
||
<header>
|
||
<h1>
|
||
Opening a file with python
|
||
</h1>
|
||
<ol class="breadcrumb">
|
||
<li>
|
||
<time class="published" datetime="2018-08-03T18:25:00+02:00">
|
||
03 août 2018
|
||
</time>
|
||
</li>
|
||
<li>Python</li>
|
||
<li>Basics</li>
|
||
</ol>
|
||
</header>
|
||
<div class='article_content'>
|
||
<p>This short article show you how to open a file using python. We will use the with keyword in order to avoid having to close the file.</p>
|
||
<p>There is no need to import anything in order to open a file. All the function related to file manipulation are part of the python standard library</p>
|
||
<p>In order to open a file, we will use the function open. This function takes two arguments : </p>
|
||
<ul>
|
||
<li>the path of the file</li>
|
||
<li>the mode you want to open the file </li>
|
||
</ul>
|
||
<p>The mode can be :</p>
|
||
<ul>
|
||
<li>'r' : read</li>
|
||
<li>'w' : write</li>
|
||
<li>'a' : append (writes at the end of the file) </li>
|
||
<li>'b' : binary mode </li>
|
||
<li>'x' : exclusive creation </li>
|
||
<li>'t' : text mode (by default)</li>
|
||
</ul>
|
||
<p>Note that if the file does not exit it will be created if you use the following options "w", "a", "x".
|
||
If you try to open a non existing file in read mode 'r', a FileNotFoundError will be returned.</p>
|
||
<p>It is possible to combine multiple options together. For instance, you can open a file in binary mode for writing using the 'wb' option.</p>
|
||
<p>Python distinguishes between binary and text I/O. Files opened in binary mode return contents as bytes objects without any decoding. In text mode , the contents of the file are returned as str, the bytes having been first decoded using a platform-dependent encoding or using the specified encoding if given.</p>
|
||
<h2>Writing to a file</h2>
|
||
<p>Let's first open (create) a text file a write a string to it.</p>
|
||
<div class="highlight"><pre><span></span><span class="n">filepath</span> <span class="o">=</span> <span class="s2">".</span><span class="se">\\</span><span class="s2">myfile.txt"</span>
|
||
|
||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filepath</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
||
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">"Hello world !"</span><span class="p">)</span>
|
||
</pre></div>
|
||
|
||
|
||
<h2>Reading a file</h2>
|
||
<p>we can now see how to read the content of a file. To do so, we will use the 'r' option</p>
|
||
<div class="highlight"><pre><span></span><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filepath</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
||
<span class="n">content</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
|
||
|
||
<span class="nb">print</span><span class="p">(</span><span class="n">content</span><span class="p">)</span>
|
||
</pre></div>
|
||
|
||
|
||
<div class="highlight"><pre><span></span><span class="err">Hello world !</span>
|
||
</pre></div>
|
||
|
||
|
||
<h1>A word on the <strong>with</strong> keyword</h1>
|
||
<p>In python the <strong>with</strong> keyword is used when working with unmanaged resources (like file streams). </p>
|
||
<p>The <a href="https://docs.python.org/3/whatsnew/2.6.html#pep-343-the-with-statement">python documentation</a> tells us that : </p>
|
||
<p>The with statement clarifies code that previously would use try...finally blocks to ensure that clean-up code is executed. In this section, I’ll discuss the statement as it will commonly be used. In the next section, I’ll examine the implementation details and show how to write objects for use with this statement.</p>
|
||
<p>The with statement is a control-flow structure whose basic structure is:</p>
|
||
<div class="highlight"><pre><span></span><span class="k">with</span> <span class="n">expression</span> <span class="p">[</span><span class="k">as</span> <span class="n">variable</span><span class="p">]:</span>
|
||
<span class="k">with</span><span class="o">-</span><span class="n">block</span>
|
||
</pre></div>
|
||
|
||
|
||
<p>The expression is evaluated, and it should result in an object that supports the context management protocol (that is, has <strong>enter</strong>() and <strong>exit</strong>() methods).</p>
|
||
</div>
|
||
<aside>
|
||
<div class="bug-reporting__panel">
|
||
<h3>Find an error or bug? Have a suggestion?</h3>
|
||
<p>Everything on this site is avaliable on GitHub. Head on over and <a href='https://github.com/redoules/redoules.github.io/issues/new'>submit an issue.</a> You can also message me directly by <a href='mailto:guillaume.redoules@gadz.org'>email</a>.</p>
|
||
</div>
|
||
</aside>
|
||
</section>
|
||
|
||
</div>
|
||
<!-- start of footer section -->
|
||
<footer class="footer">
|
||
<div class="container">
|
||
<p class="text-muted">
|
||
<center>This project contains 115 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||
<br/>
|
||
Copyright © Guillaume Redoulès,
|
||
<time datetime="2018">2018</time>.
|
||
</center>
|
||
</p>
|
||
</div>
|
||
</footer>
|
||
|
||
<!-- This jQuery line finds any span that contains code highlighting classes and then selects the parent <pre> tag and adds a border. This is done as a workaround to visually distinguish the code inputs and outputs -->
|
||
<script>
|
||
$( ".hll, .n, .c, .err, .k, .o, .cm, .cp, .c1, .cs, .gd, .ge, .gr, .gh, .gi, .go, .gp, .gs, .gu, .gt, .kc, .kd, .kn, .kp, .kr, .kt, .m, .s, .na, .nb, .nc, .no, .nd, .ni, .ne, .nf, .nl, .nn, .nt, .nv, .ow, .w, .mf, .mh, .mi, .mo, .sb, .sc, .sd, .s2, .se, .sh, .si, .sx, .sr, .s1, .ss, .bp, .vc, .vg, .vi, .il" ).parent( "pre" ).css( "border", "1px solid #DEDEDE" );
|
||
</script>
|
||
|
||
|
||
<!-- Load Google Analytics -->
|
||
<script>
|
||
/*
|
||
(function(i, s, o, g, r, a, m) {
|
||
i['GoogleAnalyticsObject'] = r;
|
||
i[r] = i[r] || function() {
|
||
(i[r].q = i[r].q || []).push(arguments)
|
||
}, i[r].l = 1 * new Date();
|
||
a = s.createElement(o),
|
||
m = s.getElementsByTagName(o)[0];
|
||
a.async = 1;
|
||
a.src = g;
|
||
m.parentNode.insertBefore(a, m)
|
||
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
|
||
|
||
ga('create', 'UA-66582-32', 'auto');
|
||
ga('send', 'pageview');
|
||
*/
|
||
</script>
|
||
<!-- End of Google Analytics -->
|
||
|
||
<!-- Bootstrap core JavaScript
|
||
================================================== -->
|
||
<!-- Placed at the end of the document so the pages load faster -->
|
||
<script src="../theme/js/bootstrap.min.js"></script>
|
||
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
||
<script src="../theme/js/ie10-viewport-bug-workaround.js"></script>
|
||
|
||
|
||
</body>
|
||
|
||
</html> |