导航:首页 > 编程语言 > python332shell

python332shell

发布时间:2022-11-13 00:46:52

‘壹’ 请教python如何执行shell管道命令

Python执行linux系统命令,即在Python脚本中调用Shell命令,具体有以下四种方法:
1、os.system
//仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息
system(command) -> exit_status
Execute the command (a string) in a subshell.
//如果再命令行下执行,结果直接打印出来:
>>> os.system('ls')
04101419778.CHM bash document media py-django video
11.wmv books downloads Pictures python
all-20061022 Desktop Examples project tools
2、os.popen
//该方法不但执行命令还返回执行后的信息对象
popen(command [, mode='r' [, bufsize]]) -> pipe
Open a pipe to/from a command returning a file object.
3、使用模块 subprocess
>>> import subprocess
>>> subprocess.call(["cmd", "arg1", "arg2"],shell=True)
//获取返回和输出:
import subprocess
p = subprocess.Popen('ls', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout.readlines():
print line,
retval = p.wait()
4、使用模块 commands

>>> import commands
>>> dir(commands)
['__all__', '__builtins__', '__doc__', '__file__', '__name__', 'getoutput', 'getstatus','getstatusoutput', 'mk2arg', 'mkarg']
>>> commands.getoutput("date")
'Wed Jun 10 19:39:57 CST 2009'
>>>
>>> commands.getstatusoutput("date")
(0, 'Wed Jun 10 19:40:41 CST 2009')

‘贰’ python 可以替代shell吗

完全可以,shell就是各种linux命令+上一些shell语法的组合。


  1. 有两种方法来使用python替代shell。

  2. 直接使用python的包来完成linux命令的工作

    1. 使用python调用shell命令,比如:

    2. importos
      os.system('ls')


如果解决了您的问题请采纳!
如果未解决请继续追问!


‘叁’ python3 linxu 运行shell命令 阻塞与非阻塞问题

这里用到subprocess内置库

subprocess.check_output() 与 subprocess.Popen() 一个是阻塞另一个是非阻塞

主要讲 subprocess.Popen()

p = Popen(shell_str, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)

如果不加shell=True,shell_str要写成list或者tuple类型

p.wait()   如果0是正常,1是有异常

p.stdin.read()

p.stdout.read()

p.stderr.read()

stdin ,   stdout, stderr 分别是标准输出, 正常输出, 错误输出 

例子:

from subprocessimport *

p = Popen(shell_str.split(' '), stdin=PIPE, stdout=PIPE, stderr=PIPE)

p_statuscode = p.wait()

‘肆’ 如何使用Python3.4与Linux shell交互

在python里面可以操作linux的命令有
1,os.system("cmd")
2,os.open("cmd")
3,spawn*
4,subprocess
在最新的python里,推荐使用subprocess来与shell通信,它会生成一个子进程来连接输出,输入,错误等shell下3中标准的输入输出流,并返回执行结果的状态码0和1,来判断本次执行命令的成功与失败。
下面来看一个小例子,首先,确保你的linux环境支持python3.4,如果不支持,你可以参考散仙的上篇文章来安装python3.4
首先,在linux,执行python命令找到最新的python3.4的路径,然后再py文件里声明头部路径,如果不知道python的具体安装路径,可以使用which python来查找路径
[root@master ~]# py
pydoc pydoc3.4 python2 python3 python3.4-config python3.4m-config pyvenv
pydoc3 python python2.6 python3.4 python3.4m python3-config pyvenv-3.4
[root@master ~]# which python3.4
/usr/local/python3.4/bin/python3.4
[root@master ~]#
写完脚本之后,先给脚本赋值权限,再执行:
[root@master rtt]# chmod +x b.py
[root@master rtt]# cat b.py
#!/usr/local/python3.4/bin/python3.4
import subprocess as t
v=t.call("ls")
print ("返回值: ",v)
[root@master rtt]# b.py
a.py b.py b.txt
返回值: 0
[root@master rtt]#
看下面的例子,注意python的shell执行,返回的是一个字符串,如果我们想逐行解析,需要使用如下方法:
[root@master rtt]# cat b.txt
id name
1 a
2 战三
3 b
[root@master rtt]# cat a.py
#!/usr/local/python3.4/bin/python3.4
import os
import subprocess as t
#var=t.getoutput("df -h")
#v=t.call("ls")
#var=t.getoutput("cat b.txt | grep a ")
var=t.getoutput("df -h | cat -n ")
for line in var.split("\n"):
print("这一行:" +line)
#print(var)
[root@master rtt]# a.py
这一行: 1 Filesystem Size Used Avail Use% Mounted on
这一行: 2 /dev/sda2 9.7G 2.9G 6.3G 32% /
这一行: 3 tmpfs 495M 0 495M 0% /dev/shm
这一行: 4 /dev/sda1 194M 28M 157M 15% /boot
这一行: 5 /dev/sda3 9.9G 948M 8.5G 10% /home
[root@master rtt]#
最后看下python的两种,生成行号的方式:
tt="你好\n哈喽"
for i,it in enumerate(tt.split("\n")):
print(i,it)
for line in range(len(tt.split("\n"))):
print(line," ",tt.split("\n")[line])
输出结果如下:
0 你好
1 哈喽
0 你好
1 哈喽

‘伍’ 如何使用python执行远程shell脚本

最近有个需求就是页面上执行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'

‘陆’ python中的shell提示符是什么意思

你安装python后会自带一个python编辑器,
在其中一个窗口你能看到以“>>>”开头的行
>>> 就是shell提示符
你可以在>>>后面输入python代码,比如

>>> print "Hello"

‘柒’ python 3.5.2 Shell 代码错误无法直接修改

工具-导入导出设置-恢复到默认配置。
代码是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。
代码设计的原则包括唯一确定性、标准化和通用性、可扩充性与稳定性、便于识别与记忆、力求短小与格式统一以及容易修改等。
源代码是代码的分支,某种意义上来说,源代码相当于代码。

‘捌’ python怎么调用shell脚本

直接使用python 后面跟python脚本的文件名就可以

例如:python tr.py就是在shell中执行pr.py这个python脚本,见下图:

‘玖’ 我希望通过Python脚本实现多次执行shell命令

python脚本实现多次循环执行shell命令有三种方法,代码如下:

#方法一
os.system
importos
i=0
whileTrue:
i=i+1
os.system("tcpreplay-ibond0-M5-l1oracle_request_response.cap")
print"+++++++++++++++++++++++++++++++"
print"times:",i
time.sleep(5)

#方法二
os.popen
importos
i=0
whileTrue:
i=i+1
printos.popen("tcpreplay-ibond0-M5-l1oracle_request_response.cap").read()
print"+++++++++++++++++++++++++++++++"
print"times:",i
time.sleep(60)

#方法三
output=Popen("xxx",shell=True).communicate()[0]
importos
fromsubprocessimport*
i=0
whileTrue:
i=i+1
output=Popen("tcpreplay-ibond0-M5-l1oracle/*",shell=True).communicate()[0]
print"+++++++++++++++++++++++++++++++"
print"times:",i
time.sleep(60)

‘拾’ python中怎么运行shell脚本

python中怎么运行shell脚本?
system()
其中最后一个0是这个命令的返回值,为0表示命令执行成功。使用system无法将执行的结果保存起来。
popen()
获取命令执行的结果,但是没有命令的执行状态,这样可以将获取的结果保存起来放到pst中。
commands
可以很方便的取得命令的输出(包括标准和错误输出)和执行状态位。
commands.getoutput('ls')这个方法只返回执行结果result不返回状态。
在python中调用shell脚本
hello.sh
下面的512是返回的状态码,如果eixt 0时则返回的是0.
shell脚本使用python脚本的参数
写一个hello.sh脚本,需要传入两个参数:
执行结果如下:
在python脚本中调用shell脚本,并传入参数,注意参数前后要有空格
执行python脚本
相关推荐:《Python教程》以上就是小编分享的关于python中怎么运行shell脚本的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!

阅读全文

与python332shell相关的资料

热点内容
java办公自动化 浏览:340
php中超链接 浏览:253
linux默认路由设置 浏览:36
linux如何挂载iso 浏览:432
vs程序换文件夹后不能编译 浏览:557
安卓源码编译输入脚本没反应 浏览:47
phpmysql自增 浏览:167
把ppt保存为pdf 浏览:533
汽车密封件加密配件 浏览:887
黑马程序员15天基础班 浏览:560
java调整格式 浏览:521
香港云服务器租用价 浏览:78
linuxsublime3 浏览:560
imac混合硬盘命令 浏览:277
沈阳用什么app租房车 浏览:857
00后高中生都用什么app 浏览:238
戴尔塔式服务器怎么打开独立显卡 浏览:807
医疗程序员招聘 浏览:597
住宿app可砍价是什么意思 浏览:133
java跳出语句 浏览:55