<h2 id="os"><strong>一、os模块</strong></h2>
<blockquote>
<p>os 模块在运维工作中是很常用的一个模块。通过os模块调用系统命令。os模块可以跨平台使用。</p>
<p>说明:os模块是对操作系统进行调用的接口</p>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> <p>11</p> <p>12</p> <p>13</p> <p>14</p> <p>15</p> <p>16</p> <p>17</p> <p>18</p> <p>19</p> <p>20</p> <p>21</p> <p>22</p> <p>23</p> <p>24</p> <p>25</p> <p>26</p> </td><td> <p><code>os.pardir </code><code>#获取当前目录的父目录字符串名:('..')</code></p> <p><code>os.makedirs(</code><code>'dirname1/dirname2'</code><code>) </code><code>#可生成多层递归目录</code></p> <p><code>os.removedirs(</code><code>'dirname1'</code><code>) </code><code>#若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推</code></p> <p><code>os.mkdir(</code><code>'dirname'</code><code>) </code><code>#生成单级目录;相当于shell中mkdir dirname</code></p> <p><code>os.rmdir(</code><code>'dirname'</code><code>) </code><code>#删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname</code></p> <p><code>os.listdir(</code><code>'dirname'</code><code>) </code><code>#列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印</code></p> <p><code>os.remove() </code><code>#删除一个文件</code></p> <p><code>os.rename(</code><code>"oldname"</code><code>,</code><code>"newname"</code><code>) </code><code>#重命名文件/目录</code></p> <p><code>os.stat(</code><code>'path/filename'</code><code>) </code><code>#获取文件/目录信息</code></p> <p><code>os.sep </code><code>#输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"</code></p> <p><code>os.linesep </code><code>#输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"</code></p> <p><code>os.pathsep </code><code>#输出用于分割文件路径的字符串</code></p> <p><code>os.name </code><code>#输出字符串指示当前使用平台。win->'nt'; Linux->'posix'</code></p> <p><code>os.system(</code><code>"bash command"</code><code>) </code><code>#运行shell命令,直接显示</code></p> <p><code>os.environ </code><code>#获取系统环境变量</code></p> <p><code>os.path.abspath(path) </code><code>#返回path规范化的绝对路径</code></p> <p><code>os.path.split(path) </code><code>#将path分割成目录和文件名二元组返回</code></p> <p><code>os.path.dirname(path) </code><code>#返回path的目录。其实就是os.path.split(path)的第一个元素</code></p> <p><code>os.path.basename(path) </code><code>#返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素</code></p> <p><code>os.path.exists(path) </code><code>#如果path存在,返回True;如果path不存在,返回False</code></p> <p><code>os.path.isabs(path) </code><code>#如果path是绝对路径,返回True</code></p> <p><code>os.path.isfile(path) </code><code>#如果path是一个存在的文件,返回True。否则返回False</code></p> <p><code>os.path.isdir(path) </code><code>#如果path是一个存在的目录,则返回True。否则返回False</code></p> <p><code>os.path.join(path1[, path2[, ...]]) </code><code>#将多个路径组合后返回,第一个绝对路径之前的参数将被忽略</code></p> <p><code>os.path.getatime(path) </code><code>#返回path所指向的文件或者目录的最后存取时间</code></p> <p><code>os.path.getmtime(path) </code><code>#返回path所指向的文件或者目录的最后修改时间</code></p> </td></tr></tbody></table>
</blockquote>
<p>在 <code>import os</code>的时候,建议使用<code>import os</code>而非<code>from os import *</code>。这样可以避免<code>os.open()</code>不会覆盖内置函数<code>open()</code>.</p>
<p><a name="_label0_0"></a></p>
<h3 id="os.name"><code>(1)os.name()</code></h3>
<p>判断系统类型</p>
<pre class="blockcode"><code>import os
print os.name
# linux和Unix系统会返回`posix`
# windows 系统会返回`nt`
</code></pre>
<p><a name="_label0_1"></a></p>
<h3 id="os.system"><code>(2)os.system()</code></h3>
<p>执行系统命令的模块,返回命令执行的<strong>状态码</strong>,开启一个子shell执行命令</p>
<pre class="blockcode"><code>import os
cmd = 'ifconfig'
retval = os.system(cmd)
print retval
# 结果为 0
# 表示命令执行成功,否则为失败
</code></pre>
<p><a name="_label0_2"></a></p>
<h3 id="os.popen"><code>(3)os.popen()</code></h3>
<p><code>popen</code>也是去执行一个命令,不过相比system(cmd),os.popen(command [, mode='r' [, bufsize]]),参数更多, |
|