Python 字符切割
本身这个脚本没有什么作用,纯粹是觉得好玩。
执行下面这个命令,我想得到最后一列的数据,其实就是ls的结果
gentoo-pjq / # ls -lh /
total 65K
drwxr-xr-x 2 root root 4.0K 2009-11-11 21:56 bin
drwxr-xr-x 4 root root 1.0K 2009-10-31 16:10 boot
drwxr-xr-x 15 root root 3.9K 2009-11-15 10:33 dev
drwxr-xr-x 94 root root 4.0K 2009-11-15 10:33 etc
drwxr-xr-x 10 root root 4.0K 2009-09-24 20:28 home
drwxr-xr-x 11 root root 4.0K 2009-11-15 00:19 lib
drwx------ 2 root root 16K 2009-09-24 19:27 lost+found
drwxr-xr-x 14 root root 4.0K 2009-11-15 10:33 media
drwxr-xr-x 4 root root 4.0K 2008-04-24 03:48 mnt
drwxr-xr-x 18 root root 4.0K 2009-11-15 00:18 opt
dr-xr-xr-x 139 root root 0 2009-11-15 18:32 proc
drwx------ 44 root root 4.0K 2009-11-15 11:07 root
drwxr-xr-x 2 root root 4.0K 2009-11-15 00:19 sbin
drwxr-xr-x 12 root root 0 2009-11-15 18:32 sys
drwxrwxrwt 9 root root 4.0K 2009-11-15 15:01 tmp
drwxr-xr-x 16 root root 4.0K 2009-09-26 18:49 usr
drwxr-xr-x 15 root root 4.0K 2009-10-17 19:26 var
要达到这个结果用Python要怎么实现呢:
def exec_shell(command):
"""
Execute the shell command and return the result.
"""
pipe=os.popen(command)
text=pipe.read()
pipe.close()
return text
li= str(exec_shell('ls / -lh')).split("\n")
print "\n".join(["%s" %(str(a).split()[7]) for a in li if (lambda args:len(str(a).split()))(a)==8])
运行结果: bin boot dev etc home lib lost+found media mnt opt proc root sbin sys tmp usr var
如果改成这样,就可以加上序号了: print “\n”.join([“%s:%s” %(li.index(a),str(a).split()[7]) for a in li if (lambda args:len(str(a).split()))(a)==8]) 1:bin 2:boot 3:dev 4:etc 5:home 6:lib 7:lost+found 8:media 9:mnt 10:opt 11:proc 12:root 13:sbin 14:sys 15:tmp 16:usr 17:var
