【PYTHON】抓 取命令行得到的一个值

pythondd5 2011-12-05 06:28:30
在LINUX下,输入命令 fdisk -l
找到任意两个硬盘

Disk /dev/sda: 246 GB

Disk /dev/sdx: 120 GB

我现在想获取 /dev/sdx中X的值并把其抓出来赋给变量 DISK,PYTHON下面有这种可以截取命令办输出行中某个字符串的方法么,
听说用MATCH什么可以实现,有没有人知道???????
...全文
92 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
马甲1 2011-12-05
  • 打赏
  • 举报
回复
下线了

用马甲来赚10分可用分,呵呵
askandstudy 2011-12-05
  • 打赏
  • 举报
回复
是skype,少打了两个字母
askandstudy 2011-12-05
  • 打赏
  • 举报
回复
我不用msn、qq的。sky偶尔用用,不过也很久没登录了。跟csdn的帐号名一样的。
askandstudy 2011-12-05
  • 打赏
  • 举报
回复
很菜,很久没用都快忘光了,现在正在复习中,年后打算找个地方去上班了。
pythondd5 2011-12-05
  • 打赏
  • 举报
回复
有QQ没,我加你
pythondd5 2011-12-05
  • 打赏
  • 举报
回复
看来你的功底很深啊,
askandstudy 2011-12-05
  • 打赏
  • 举报
回复
以前是系统管理维护数据库管理维护系统运维之类的工作,现在失业中。。。
askandstudy 2011-12-05
  • 打赏
  • 举报
回复
不是标准库里的?
dir看看或者去官方网查一下reference文档看看有没有提供捕获输出的方法
pythondd5 2011-12-05
  • 打赏
  • 举报
回复
你是做哪行的,呵呵,,
askandstudy 2011-12-05
  • 打赏
  • 举报
回复
没用过这个模块,说不上来,查一下手册看看,如果能类似的获取到输出信息就可以啊
pythondd5 2011-12-05
  • 打赏
  • 举报
回复
我用的是PEXPECT模块来,这个能实现么??
askandstudy 2011-12-05
  • 打赏
  • 举报
回复
能够捕获到输出了就可以从那些字符串里自己分析匹配了。

[root@RHEL6B pycode]# cat py12.py
#!/usr/bin/env python
#coding:utf-8
from subprocess import Popen, PIPE
proc = Popen(['fdisk', '-l'], stdout=PIPE, stderr=PIPE)
return_code = proc.wait()
voutput=proc.stdout.read()

print '#'*20,'debug info','#'*20
#print 'type:',type(voutput)
#print 'length:',len(voutput)
s1=voutput.replace('\n',' ').split(' ')
#print s1
sdx=[i for i in s1 if i.startswith('/dev/sd')]
print sdx
print '#'*20,'debug info','#'*20

if return_code == 0:
print "Success:\n%s" % voutput
else:
print "Failure %s:\n%s" % (return_code, voutput)



[root@RHEL6B pycode]# ./py12.py
#################### debug info ####################
['/dev/sda:', '/dev/sda1', '/dev/sda2', '/dev/sda3']
#################### debug info ####################
Success:

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0007c6c1

Device Boot Start End Blocks Id System
/dev/sda1 * 1 32 256000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 32 294 2097152 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 294 3917 29103104 83 Linux

[root@RHEL6B pycode]#

代码是网上抄来的,稍微加了几句,做了个练习而已。

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧