xiaoyuxixi

前言:

  总体上来说shell能够实现的功能python也能实现,反之亦然,但遗憾的是,很多的项目处于内网的环境,连基本的vim都没有,更不用提安装python编译环境与安装第三方库,和集成好的IDE,当然,如果你能够忍受调试环境的麻烦的话,python也是不错的选择,虽然有这些因素带来的不便,但python脚本自然有它较shell更优秀的地方,比如在数据处理上,图形处理上,能够方便的将需要处理的数据生成表格与图片,再比如在数据库的连接上,直接就有现成的函数可以使用,本篇博客将会长期更新,以记录在日常运维工作中对两种脚本语言不同应用场景的适应性纪实与小技巧的记录。

总体上有一个原则,如果shell脚本大于100行的话,在情况允许(方便连接外网)的情况下,可以用python对脚本进行重写。

1.python执行linux命令:python中的sys与system不是同一个东西,system是os模块下的一个函数,可以将字符串转化成命令在服务器上运行;其原理是每一条system函数执行时,其会创建一个子进程在系统上执行命令行,子进程的执行结果无法影响主进程;上述原理会导致当需要执行多条命令行的时候可能得不到预期的结果;最后,针对linux上的常用命令, os.system也有对应的函数与方法调用,如创建/删除文件夹;建议使用方法来实现对linux系统的操作,如使用方法删除文件夹时,如果文件夹不存在,会出现拒绝访问的错误,但使用命令的话,只会无脑执行。

import os

os.system(\'cd /usr/local\')
os.mkdir(\'aaa.txt)

上述程序运行后会发现txt文件并没有创建在/usr/local文件夹下,而是在当前的目录下;

参考办法:为了保证system执行多条命令可以成功,多条命令需要在同一个子进程中运行;

import os

os.system(\'cd /usr/local && mkdir aaa.txt\')
# 或者
os.system(\'cd /usr/local ; mkdir aaa.txt\')

2.python判断linux命令是否执行成功:python中实现对linux系统执行shell有两种方法:os.system(cmd)或os.popen(cmd)脚本执行过程中的输出内容。实际使用时视需求情况而选择。

两者的区别是:

os.system(cmd)的返回值是脚本的退出状态码,只会有0(成功),1,2
os.popen(cmd)返回脚本执行的输出内容作为返回值
比如计算一个文件的md5值:

os.system(cmd):

该方法在调用完shell脚本后,返回一个信号代码。

>>> os.system(\'md5sum /root/all.sql\')
7735d611ebce91ebb4c7acc4747a8b67 /root/all.sql
0 #返回的信号代码 0(成功)
os.popen(cmd):

这种调用方式是通过管道的方式来实现,函数返回一个file-like的对象,里面的内容是脚本输出的内容(可简单理解为echo输出的内容)。使用os.popen调用脚本的情况:
如:

>>> md5_value = os.popen(\'md5sum /root/all.sql\') #将结果赋值给变量
>>> print(type(md5_value)) #查看类型
<class \'os._wrap_close\'>
>>> print(md5_value.read().split()[0]) #取值
7735d611ebce91ebb4c7acc4747a8b67

明显地,像调用”ls”这样的shell命令,应该使用popen的方法来获得内容

3.python判断路径或文件是否存在:os模块有path函数及方法可以来实现判断路径或文件是否存在

 

>>> import os
>>> os.path.isfile(\'/root/test\')
False
>>> os.path.isfile(\'/root/test.sh\')
True
>>> os.path.isdir(\'/root/\')
True
>>> os.path.isdir(\'/root/ss\')
False
>>> 

 

4.python判断文件读、写、执行权限:os模块中有acces函数来实现

>>> os.access(\'/root/test.sh\',os.X_OK)
True
>>> os.access(\'/root/test.sh\',os.W_OK)
True
>>> os.access(\'/root/test.sh\',os.R_OK)
True
>>> 

 

分类:

技术点:

相关文章:

  • 2021-07-26
  • 2021-07-15
  • 2021-08-19
  • 2021-10-31
  • 2021-06-14
  • 2022-12-23
  • 2021-11-03
  • 2022-01-13
猜你喜欢
  • 2022-12-23
  • 2021-09-15
  • 2022-12-23
  • 2021-09-12
  • 2021-12-16
相关资源
相似解决方案