Python模块——os模块详解
<h2>本文大纲</h2><p>os模块是Python中整理文件和目录最为常用的模块,该模块提供了非常丰富的方法用来处理文件和目录。本着<code>只讲最有用</code>的态度,下方我将os模块中一些我经常用的的方法,给大家详细列举出来了,<code>希望减少大家的学习负担</code>。</p>
<p><img src="https://img2020.cnblogs.com/blog/2630138/202112/2630138-20211220085035487-217047869.png"></p>
<p> </p>
<p> </p>
<h2>知识串讲</h2>
<h4>1)模块的安装和导入</h4>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 导入</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 255, 1)">import</span> os</pre>
</div>
<h4>2)os.getcwd()</h4>
<ul>
<li>作用:获取当前的工作路径;</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> os.getcwd()</pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/2630138/202112/2630138-20211220085144922-372343627.png"></p>
<p> </p>
<p> </p>
<h4>3)os.listdir(path)</h4>
<ul>
<li>作用:传入任意一个path路径,返回的是该路径下所有<code>文件和目录</code>组成的列表;</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> path = r<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">C:\Users\黄伟\Desktop\publish\os模块\test_os模块</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> os.listdir(path)</pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/2630138/202112/2630138-20211220085231083-462207012.png"></p>
<p> </p>
<p> </p>
<h4>3)os.walk(path)</h4>
<ul>
<li>含义 :传入任意一个path路径,深层次遍历指定路径下的所有子文件夹,返回的是一个由路径、文件夹列表、文件列表组成的元组。我代码中写的方式属于<code>元组拆包</code>;</li>
<li><code>元组拆包</code>:就是将一个元组中的每个值,赋值给不同的变量;</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> path = r<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">C:\Users\黄伟\Desktop\publish\os模块\test_os模块</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 255, 1)">for</span> path,dirs,files <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> os.walk(path):
</span><span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(path)
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(dirs)
</span><span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(files)
</span><span style="color: rgba(0, 128, 128, 1)">6</span> <span style="color: rgba(0, 0, 255, 1)">print</span>(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">\n</span><span style="color: rgba(128, 0, 0, 1)">"</span>)</pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/2630138/202112/2630138-20211220085357621-2027961004.png"></p>
<p> </p>
<p> </p>
<h4>4)os.path.exists(path)</h4>
<ul>
<li>含义:传入一个path路径,判断指定路径下的目录是否存在。存在返回True,否则返回False;</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> path1 = <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">C:\\Users\\黄伟\\Desktop\\publish\\os模块\\huang_wei</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> os.path.exists(path1):
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 0, 255, 1)">print</span>(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">指定文件夹存在</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
</span><span style="color: rgba(0, 128, 128, 1)">6</span> <span style="color: rgba(0, 0, 255, 1)">print</span>(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">指定文件夹不存在</span><span style="color: rgba(128, 0, 0, 1)">"</span>)</pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/2630138/202112/2630138-20211220085450296-1644981205.png"></p>
<p> </p>
<p> </p>
<h4>5)os.mkdir(path)</h4>
<ul>
<li>含义:传入一个path路径,创建单层(单个)文件夹;</li>
<li>注意:如果文件夹已经存在,就会报错。因此创建文件夹之前,需要使用os.path.exists(path)函数判断文件夹是否存在;</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">os.getcwd()
</span><span style="color: rgba(0, 128, 128, 1)">2</span> path1 = os.getcwd()+<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">\\huang_wei</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">3</span> os.mkdir(path1)</pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/2630138/202112/2630138-20211220085540849-1555903147.png"></p>
<p> </p>
<p> </p>
<h4>6)os.makedirs(path)</h4>
<ul>
<li>含义:传入一个path路径,生成一个递归的文件夹;</li>
<li>注意:如果文件夹存在,就会报错。因此创建文件夹之前,需要使用os.path.exists(path)函数判断文件夹是否存在;</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">os.getcwd()
</span><span style="color: rgba(0, 128, 128, 1)">2</span> path1 = os.getcwd()+<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">\\huang_wei</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">3</span> os.mkdir(path1)</pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/2630138/202112/2630138-20211220085618710-440067946.png"></p>
<p> </p>
<p> </p>
<h4>7)os.rmdir(path)</h4>
<ul>
<li>含义:传入一个path路径,删除指定路径下的文件夹;</li>
<li>注意:该方法只能删除空文件夹,删除非空文件夹会报错;</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> path1 = os.getcwd()+<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">\\huang_wei</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)">os.rmdir(path1)
</span><span style="color: rgba(0, 128, 128, 1)">3</span> ----------------------------------
<span style="color: rgba(0, 128, 128, 1)">4</span> path2 = os.getcwd()+<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">\\a\\b\\c</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">5</span> os.rmdir(path2) </pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/2630138/202112/2630138-20211220085702019-1127256466.png"></p>
<p> </p>
<p> </p>
<h4>8)os.path.join(path1,path2)</h4>
<ul>
<li>含义:传入两个path路径,将该路径拼接起来,形成一个新的完整路径;</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> path =<span style="color: rgba(0, 0, 0, 1)"> os.getcwd()
</span><span style="color: rgba(0, 128, 128, 1)">2</span> lis = [<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a.jpg</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">b.jpg</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">c.jpg</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
</span><span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> lis:
</span><span style="color: rgba(0, 128, 128, 1)">4</span> x =<span style="color: rgba(0, 0, 0, 1)"> os.path.join(path,i)
</span><span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(0, 0, 255, 1)">print</span>(x)</pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/2630138/202112/2630138-20211220085740368-2135433583.png"></p>
<p> </p>
<p> </p>
<h4>9)os.path.split(path)</h4>
<ul>
<li>含义:传入一个完整的path路径,将其拆分为<code>绝对路径</code>和<code>文件名</code>2部分;</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> path1 = r<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">C:\Users\黄伟\Desktop\publish\os模块\a.jpg</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> os.path.split(path1)</pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/2630138/202112/2630138-20211220085817262-661155433.png"></p>
<p> </p>
<p> </p>
<h4>10)os.path.dirname(path)</h4>
<ul>
<li>含义:传入一个完整的文件路径,只获取其绝对路径;</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> path1 = r<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">C:\Users\黄伟\Desktop\publish\os模块\a.jpg</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> os.path.dirname(path1)</pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/2630138/202112/2630138-20211220085900568-1734036047.png"></p>
<p> </p>
<p> </p>
<h4>11)os.path.basename(path)</h4>
<ul>
<li>含义:传入一个完整的文件路径,只获取其文件名;</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> path1 = r<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">C:\Users\黄伟\Desktop\publish\os模块\a.jpg</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> os.path.basename(path1)</pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/2630138/202112/2630138-20211220085932612-1758955377.png"></p>
<p> </p>
<p> </p>
<h4>12)os.path.isdir(path)</h4>
<ul>
<li>含义:传入一个完整的文件路径,判断它是否是文件夹;</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> path =<span style="color: rgba(0, 0, 0, 1)"> os.getcwd()
</span><span style="color: rgba(0, 128, 128, 1)">2</span> file_list =<span style="color: rgba(0, 0, 0, 1)"> os.listdir()
</span><span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 255, 1)">for</span> file <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> file_list:
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> os.path.isdir(file):
</span><span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(0, 0, 255, 1)">print</span>(file)</pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/2630138/202112/2630138-20211220090005945-1812288380.png"></p>
<p> </p>
<p> </p>
<h4>13)os.path.isfile(path)</h4>
<ul>
<li>含义:传入一个完整的文件路径,判断它是否是文件;</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> path =<span style="color: rgba(0, 0, 0, 1)"> os.getcwd()
</span><span style="color: rgba(0, 128, 128, 1)">2</span> file_list =<span style="color: rgba(0, 0, 0, 1)"> os.listdir()
</span><span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 255, 1)">for</span> file <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> file_list:
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> os.path.isfile(file):
</span><span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(0, 0, 255, 1)">print</span>(file)</pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/2630138/202112/2630138-20211220090040647-764903233.png"></p>
<p> </p>
<p> </p>
<h4>14)os.path.sep</h4>
<ul>
<li>含义:返回当前操作系统的路径分隔符;</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> os.path.sep</pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/2630138/202112/2630138-20211220090113431-1059907286.png"></p>
<p> </p>
<p> </p>
<h4>15)os.path.getsize(path)</h4>
<ul>
<li>含义:传入一个完整的文件路径,返回该文件的大小;</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> os.path.getsize(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">我创建的压缩包.zip</span><span style="color: rgba(128, 0, 0, 1)">"</span>)</pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/2630138/202112/2630138-20211220090150333-732743270.png"></p>
<p> </p><br><br>
来源:https://www.cnblogs.com/ltkekeli1229/p/15709442.html
頁:
[1]