一、使用os模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<span style="font-size: 16px;">In [1]: <span style="color: rgba(0, 0, 255, 1);">import</span> os <span style="color: rgba(0, 128, 0, 1);">#</span><span style="color: rgba(0, 128, 0, 1);">导入os模块</span> <span style="color: rgba(0, 0, 0, 1);"> In [</span>2]: os.system(<span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">ls</span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(0, 0, 0, 1);">) anaconda</span>-<span style="color: rgba(0, 0, 0, 1);">ks.cfg epel</span>-release-7-5<span style="color: rgba(0, 0, 0, 1);">.noarch.rpm ipython</span>-4.1.2<span style="color: rgba(0, 0, 0, 1);"> ipython</span>-4.1.2<span style="color: rgba(0, 0, 0, 1);">.tar.gz pip</span>-8.1.2<span style="color: rgba(0, 0, 0, 1);"> pip</span>-8.1.2.tar.gz<span style="color: rgba(0, 128, 0, 1);">#</span><span style="color: rgba(0, 128, 0, 1);">md5=87083c0b9867963b29f7aba3613e8f4a.gz</span><span style="color: rgba(0, 0, 0, 1);"> Out[</span>2<span style="color: rgba(0, 0, 0, 1);">]: 0 In [</span>3]: a=os.system(<span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">ls</span><span style="color: rgba(128, 0, 0, 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, 0, 0, 1);"> anaconda</span>-<span style="color: rgba(0, 0, 0, 1);">ks.cfg epel</span>-release-7-5<span style="color: rgba(0, 0, 0, 1);">.noarch.rpm ipython</span>-4.1.2<span style="color: rgba(0, 0, 0, 1);"> ipython</span>-4.1.2<span style="color: rgba(0, 0, 0, 1);">.tar.gz pip</span>-8.1.2<span style="color: rgba(0, 0, 0, 1);"> pip</span>-8.1.2.tar.gz<span style="color: rgba(0, 128, 0, 1);">#</span><span style="color: rgba(0, 128, 0, 1);">md5=87083c0b9867963b29f7aba3613e8f4a.gz</span><span style="color: rgba(0, 0, 0, 1);"> In [</span>4]: a <span style="color: rgba(0, 128, 0, 1);">#</span><span style="color: rgba(0, 128, 0, 1);">执行ls命令的返回值,成功,为0</span><span style="color: rgba(0, 0, 0, 1);"> Out[</span>4<span style="color: rgba(0, 0, 0, 1);">]: 0 In [</span>5]: b=os.popen(<span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">ls</span><span style="color: rgba(128, 0, 0, 1);">'</span>).readlines() <span style="color: rgba(0, 128, 0, 1);">#</span><span style="color: rgba(0, 128, 0, 1);">将得到的结果直接赋值给b列表</span><span style="color: rgba(0, 0, 0, 1);"> In [</span>6]: b <span style="color: rgba(0, 128, 0, 1);">#</span><span style="color: rgba(0, 128, 0, 1);">ls执行结果输出到内存,再全部读取赋值给b列表</span><span style="color: rgba(0, 0, 0, 1);"> Out[</span>6<span style="color: rgba(0, 0, 0, 1);">]: [</span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">anaconda-ks.cfgn</span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(0, 0, 0, 1);">, </span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">epel-release-7-5.noarch.rpmn</span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(0, 0, 0, 1);">, </span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">ipython-4.1.2n</span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(0, 0, 0, 1);">, </span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">ipython-4.1.2.tar.gzn</span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(0, 0, 0, 1);">, </span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">pip-8.1.2n</span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(0, 0, 0, 1);">, </span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">pip-8.1.2.tar.gz#md5=87083c0b9867963b29f7aba3613e8f4a.gzn</span><span style="color: rgba(128, 0, 0, 1);">'</span>]</span> |
>>>os模块中常见方法(Linux命令)
os.remove():删除文件
os.rename():重命名文件
os.walk():生成目录树下的所有文件名
os.chdir():改变目录
os.mkdir/makedirs:创建目录/多层目录
os.rmdir/removedirs:删除目录/多层目录
os.listdir():列出指定目录的文件
os.getcwd():取得当前工作目录
os.chmod():改变目录权限
os.path.basename():去掉目录路径,返回文件名
os.path.dirname():去掉文件名,返回目录路径
os.path.join():将分离的各部分组合成一个路径名
os.path.getsize():返回文件大小
os.path.exists():是否存在
os.path.isabs():是否为绝对路径
os.path.isdir():是否为目录
os.path.isfile():是否为文件
二、使用commands模块
注意:该模块用于Python2,到了Python3不推荐使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<span style="font-size: 16px;">In [7]: <span style="color: rgba(0, 0, 255, 1);">import</span> commands <span style="color: rgba(0, 128, 0, 1);">#</span><span style="color: rgba(0, 128, 0, 1);">导入commands模块</span><span style="color: rgba(0, 0, 0, 1);"> In [</span>8]: c=commands.getoutput(<span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">ls</span><span style="color: rgba(128, 0, 0, 1);">'</span>) <span style="color: rgba(0, 128, 0, 1);">#</span><span style="color: rgba(0, 128, 0, 1);">ls命令执行结果,字符串形式赋值给c变量</span><span style="color: rgba(0, 0, 0, 1);"> In [</span>9<span style="color: rgba(0, 0, 0, 1);">]: c Out[</span>9]: <span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">anaconda-ks.cfgnepel-release-7-5.noarch.rpmnipython-4.1.2nipython-4.1.2.tar.gznpip-8.1.2npip-8.1.2.tar.gz#md5=87083c0b9867963b29f7aba3613e8f4a.gz</span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(0, 0, 0, 1);"> In [</span>10]: d=c.split(<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>) <span style="color: rgba(0, 128, 0, 1);">#</span><span style="color: rgba(0, 128, 0, 1);">对变量c,指定分隔符n分隔,列表形式赋值给d</span><span style="color: rgba(0, 0, 0, 1);"> In [</span>11<span style="color: rgba(0, 0, 0, 1);">]: d Out[</span>11<span style="color: rgba(0, 0, 0, 1);">]: [</span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">anaconda-ks.cfg</span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(0, 0, 0, 1);">, </span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">epel-release-7-5.noarch.rpm</span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(0, 0, 0, 1);">, </span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">ipython-4.1.2</span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(0, 0, 0, 1);">, </span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">ipython-4.1.2.tar.gz</span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(0, 0, 0, 1);">, </span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">pip-8.1.2</span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(0, 0, 0, 1);">, </span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">pip-8.1.2.tar.gz#md5=87083c0b9867963b29f7aba3613e8f4a.gz</span><span style="color: rgba(128, 0, 0, 1);">'</span>]</span> |
三、read、readline、readlines区别
1、read()全部取出,放到字符串里
2、readline()方法会将内存空间里的内容一次性只读一行,放到一个字符串里
3、readlines()方法会将内存空间里的内容一次性全部取出来,放到一个列表里
四、Python脚本实践
1、编写一个python脚本实现输出linux里的所有的用户的信息,格式如下:
username is root uid is 0
username is xiaojin uid is 200
username is bin uid is 10
方式一:
1 2 3 4 5 6 7 |
<span style="font-size: 16px;"><span style="color: rgba(0, 128, 0, 1);">#</span><span style="color: rgba(0, 128, 0, 1);">!/usr/bin/python</span> <span style="color: rgba(0, 0, 255, 1);">import</span><span style="color: rgba(0, 0, 0, 1);"> commands user_str</span>=commands.getoutput(<span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(128, 0, 0, 1);">cat /etc/passwd</span><span style="color: rgba(128, 0, 0, 1);">'</span><span style="color: rgba(0, 0, 0, 1);">) user_list</span>=user_str.splitlines() <span style="color: rgba(0, 128, 0, 1);">#</span><span style="color: rgba(0, 128, 0, 1);">列表形式分隔文件内容(默认按行分隔)</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);"> user_list: u_info</span>=i.split(<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, 0, 255, 1);"> print</span> <span style="color: rgba(128, 0, 0, 1);">"</span><span style="color: rgba(128, 0, 0, 1);">username is </span><span style="color: rgba(128, 0, 0, 1);">"</span>,u_info[0],<span style="color: rgba(128, 0, 0, 1);">"</span><span style="color: rgba(128, 0, 0, 1);">uid is </span><span style="color: rgba(128, 0, 0, 1);">"</span>,u_info[2]</span> |
方式二:
1 2 3 4 5 6 |
<span style="font-size: 16px;"><span style="color: rgba(0, 128, 0, 1);">#</span><span style="color: rgba(0, 128, 0, 1);">!/usr/bin/python</span> <span style="color: rgba(0, 0, 255, 1);">import</span><span style="color: rgba(0, 0, 0, 1);"> os userlines</span>=os.popen(<span style="color: rgba(128, 0, 0, 1);">"</span><span style="color: rgba(128, 0, 0, 1);">cat /etc/passwd</span><span style="color: rgba(128, 0, 0, 1);">"</span><span style="color: rgba(0, 0, 0, 1);">).readlines() </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);"> userlines: user_info</span>=i.split(<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, 0, 255, 1);"> print</span> <span style="color: rgba(128, 0, 0, 1);">"</span><span style="color: rgba(128, 0, 0, 1);">username is</span><span style="color: rgba(128, 0, 0, 1);">"</span>,user_info[0],<span style="color: rgba(128, 0, 0, 1);">"</span><span style="color: rgba(128, 0, 0, 1);">tuid is</span><span style="color: rgba(128, 0, 0, 1);">"</span>,user_inf</span>o[2] |
2、数值脚本
1.提醒用户输入内容范围是0-100
2.判断用户输入的内容,如果不是数字给予提醒
3.输出用户输入的内容
1 2 3 4 5 6 7 8 9 |
<span style="font-size: 16px;"><span style="color: rgba(0, 128, 0, 1);">#</span><span style="color: rgba(0, 128, 0, 1);">!/usr/bin/python</span><span style="color: rgba(0, 0, 0, 1);"> u_grade</span>=raw_input(<span style="color: rgba(128, 0, 0, 1);">"</span><span style="color: rgba(128, 0, 0, 1);">please input your grade:</span><span style="color: rgba(128, 0, 0, 1);">"</span><span style="color: rgba(0, 0, 0, 1);">) </span><span style="color: rgba(0, 0, 255, 1);">if</span> u_grade.isdigit(): <span style="color: rgba(0, 128, 0, 1);">#</span><span style="color: rgba(0, 128, 0, 1);">isdigit()将字符串转换成数的方法</span> <span style="color: rgba(0, 0, 255, 1);"> if</span> 0<=int(u_grade)<=100<span style="color: rgba(0, 0, 0, 1);">: </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);">your grade is</span><span style="color: rgba(128, 0, 0, 1);">"</span><span style="color: rgba(0, 0, 0, 1);">,u_grade </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, 0, 255, 1);"> print</span> <span style="color: rgba(128, 0, 0, 1);">"</span><span style="color: rgba(128, 0, 0, 1);">please input the range of number 0-100</span><span style="color: rgba(128, 0, 0, 1);">"</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, 0, 255, 1);"> print</span> <span style="color: rgba(128, 0, 0, 1);">"</span><span style="color: rgba(128, 0, 0, 1);">It's not a valid number,try again</span><span style="color: rgba(128, 0, 0, 1);">"</span></span> |