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

pythoncommonds

发布时间:2022-07-22 15:50:25

python commands.getstatusoutput 一直不退出,求教

因为CPython坚持要让commands模块为Unix-specific而不打算兼容Windows呗。
>>> import sys
>>> sys.platform
'win32'
>>> from subprocess import getoutput
>>> getoutput('echo')
'ECHO 处于打开状态。'

Python 2 大概是不会修了。不过它也有 subprocess 模块!

② python commands 需要导入 哪个模块

要获得shell命令的输出只需要`cmd`就可以了,
需要得到命令执行的状态则需要判断$?的值, 在Python中有一个模块commands也很容易做到以上的效果.

看一下三个函数:

1). commands.getstatusoutput(cmd)

用os.popen()执行命令cmd, 然后返回两个元素的元组(status, result). cmd执行的方式是{ cmd ; } 2>&1, 这样返回结果里面就会包含标准输出和标准错误.

2). commands.getoutput(cmd)

只返回执行的结果, 忽略返回值.

3). commands.getstatus(file)

返回ls -ld file执行的结果.

看一下这些函数使用的例子:
>>> 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中的命令

(1)os.system

# 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息

# 如果再命令行下执行,结果直接打印出来例如: osos.system('ls')

chk_err_log.py CmdTool.log install_log.txt install_zabbix.sh manage_deploy.sh MegaSAS.log

(2)os.popen

#该方法不但执行命令还返回执行后的信息对象

#好处在于:将返回的结果赋于一变量,便于程序的处理。

例如:import ostmp = os.popen('ls *.sh').readlines()tmp['install_zabbix.shn', 'manage_deploy.shn', 'mysql_setup.shn', 'python_manage_deploy.shn', 'setup.shn']

(3)使用模块subprocess使用方法:import subprocess

subprocess.call (["cmd", "arg1", "arg2"],shell=True)

好处在于:运用对线程的控制和监控,将返回的结果赋于一变量,便于程序的处理。

如获取返回和输出:

import subprocess

p = subprocess.Popen('ls *.sh', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

print p.stdout.readlines()

for line in p.stdout.readlines():

print line,

retval = p.wait()

(4) 使用模块commands模块

常用的主要有两个方法:getoutput和getstatusoutput

import commands

commands.getoutput('ls *.sh')

'install_zabbix.shnmanage_deploy.shnmysql_setup.shnpython_manage_deploy.shnsetup.sh'

commands.getstatusoutput('ls *.sh')

(0, 'install_zabbix.shnmanage_deploy.shnmysql_setup.shnpython_manage_deploy.shnsetup.sh')

注意: 当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess,如果使用os.popen则会出现错误。

④ 如何在python等脚本中调用outlook组件

最近有个需求就是页面上执行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环境
方法/步骤

os.system("The command you want"). 这个调用相当直接,且是同步进行的,程序需要阻塞并等待返回。返回值是依赖于系统的,直接返回系统的调用返回值,所以windows和linux是不一样的
os.popen(command[,mode[,bufsize]]),
图中是一个例子.
可以看出,popen方法通过p.read()获取终端输出,而且popen需要关闭close().当执行成功时,close()不返回任何值,失败
时,close()返回系统返回值. 可见它获取返回值的方式和os.system不同。

使用commands模块,图中是一组例子。根据你需要的不同,commands模块有三个方法可供选择。getstatusoutput, getoutput, getstatus。

但是,如上三个方法都不是Python推荐的方法,而且在Python3中其中两个已经消失。Python文档中目前全力推荐第四个方法,subprocess! subprocess使用起来同样简单:


接调用命令,返回值即是系统返回。shell=True表示命令最终在shell中运行。Python文档中出于安全考虑,不建议使用
shell=True。建议使用Python库来代替shell命令,或使用pipe的一些功能做一些转义。官方的出发点是好的,不过真心麻烦了很多,
so.... 如果你更关注命令的终端输出,可以如下图这样操作, 同样很简单.

⑥ python中,执行命令的方法有哪些

1. os.system()
这个方法直接调用标准C的system()函数,仅仅在一个子终端运行系统命令,而不能获取执行返回的信息。
2. os.popen()
这个方法执行命令并返回执行后的信息对象,是通过一个管道文件将结果返回。
3. commands模块
注意1:在类unix的系统下使用此方法返回的返回值(status)与脚本或命令执行之后的返回值不等,这是因为调用了os.wait()的缘故,具体原因就得去了解下系统wait()的实现了。需要正确的返回值(status),只需要对返回值进行右移8位操作就可以了。
注意2:当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess。
4. subprocess模块
该模块是一个功能强大的子进程管理模块,是替换os.system, os.spawn*等方法的一个模块。

⑦ python如何分别向两个cmd窗口输入指令

可以用 Popen.stdin.write(),但这是 Python 文档里不推荐的,因为很容易导致死锁:

process = Popen(["powershell"], stdout=PIPE, stdin=PIPE, stderr=STDOUT)
commands = [ "python --version", "activate py34", "python --version"]for cmd in commands: process.stdin.write((cmd + "\n").encode("utf-8")) process.stdin.flush()for line in iter(process.stdout.readline, ""):
print(line.strip().decode("utf-8"))

⑧ windows中用python执行commands.getstatusoutput为什么出错

那么你就allcommands=["blabla","blablabla"] 然后 for cmd in allcommands: ________commands.getstatusoutput(cmd) 吧,我是windows,不能使用这个mole 我的意思是你有多个命令的话,写到列表里面,一个一个调用。
完成。

阅读全文

与pythoncommonds相关的资料

热点内容
文件夹常用命令 浏览:203
被调侃的程序员 浏览:489
哪里有无损音乐app下载 浏览:221
单片机如何使用proteus 浏览:991
java常用的服务器 浏览:281
集结APP在哪里下载 浏览:800
欧洲cf玩什么服务器 浏览:529
如何连接另一台电脑上的共享文件夹 浏览:681
如何让桌面文件夹搬家到e盘 浏览:73
java自动格式化 浏览:619
ipad怎么查看文件夹大小 浏览:583
手工粘土解压球 浏览:552
在线视频教育源码 浏览:41
快四十学什么编程 浏览:754
gnumakelinux 浏览:537
视易峰云服务器怎么改系统 浏览:535
javamap取值 浏览:768
mac和win磁盘加密软件 浏览:474
苹果为什么会连接不到服务器 浏览:726
pdf格式文件如何保存 浏览:303