怎么在python脚本中实现shell命令

怎么在python脚本中实现shell命令,第1张

最近有个需求就是页面上执行shell命令,第一想到的就是os.system,

复制代码 代码如下:

os.system('cat /proc/cpuinfo')

但是发现页面上打印的命令执行结果 0或者1,当然不满足需求了。

尝试第二种方案 os.popen()

复制代码 代码如下:

output = os.popen('cat /proc/cpuinfo')

print output.read()

通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的 *** 作可以看到执行的输出。但是无法读取程序执行的返回值)

尝试第三种方案 commands.getstatusoutput() 一个方法就可以获得到返回值和输出,非常好用。

复制代码 代码如下:

(status, output) = commands.getstatusoutput('cat /proc/cpuinfo')

print status, output

Python Document 中给的一个例子,

复制代码 代码如下:

>>>import commands

>>>commands.getstatusoutput('ls /bin/ls')

(0, '/bin/ls')

>>>commands.getstatusoutput('cat /bin/junk')

(256, 'cat: /bin/junk: No such file or directory')

>>>commands.getstatusoutput('/bin/junk')

(256, 'sh: /bin/junk: not found')

>>>commands.getoutput('ls /bin/ls')

'/bin/ls'

>>>commands.getstatus('/bin/ls')

'-rwxr-xr-x 1 root 13352 Oct 14 1994 /bin/ls'

最后页面上还可以根据返回值来显示命令执行结果。

(已尝试mac自带的文本编辑器,脚本编辑器无法编写.sh文件

运行后出现vim主界面,代表mac有vim,并且成功进入了vim

想要运行.py文件,直接使用绝对路径即可(此路径可以通过直接拖进终端即可获得,或者使用快捷键Option+Command+C 复制文件途径。)

格式: /可执行文件所在目录/可执行文件

到这里简单可以运行regression.py文件的shell脚本写好了。

解决办法:修改rt.sh文件权限,命令为:

解决办法:同问题一

查了资料问题是'(',')'要使用转义,才可以识别即'(',')'。所以在最开始打开regression.py文件把所有的括号都加了一遍,这种方法不会再出现括号的错误,但是这并不是一个合理的解决办法,这样太麻烦了,而且编写时是不会这样处理的,所以在看了另一个别人的脚本时,发现在.py脚本的头部,即第一行加了一句话

这时使用未做过括号处理的.py文件,也不会报错了!

可参考: https://blog.csdn.net/wh_19910525/article/details/8040494

regression.py在不使用rt.sh文件是可以成功运行的,但是此时出现no module错误。

开始以为是quandl自己安装的问题,在python2.7是Quandl,python3.6是quandl,所以在终端使用pip3,pip分别安装,但是运行时还会出现同样问题,但发现一个问题不管是在使用pip,还是pip3在终端运行时,均会说此包已存在,但存在路径均为python3.6下,所以尝试更改regression.py文件的头部第一行,更改为: #!/usr/bin/env python3

可以正常运行了!!!!

还是开心的晒一下,结果吧。(虽然和脚本无关了,哈哈哈哈哈)

对于使用shell脚本,传递参数,后续进行学习总结,今天就总结好编写shell脚本运行python文件吧!


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11950420.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存