python学习五:执行linux命令的两种方法、提高运行效率、进制转换、切片详解、ip和mac获取
2013-08-27 21:53
1896 查看
1. 执行linux命令
(1)import os
os.system('ls -l')
(2) import subprocess
subprocess.call('ls -l'.split())
2. 提高运行效率
下面说一下提高python执行效率的方法,这里只是说一点,python在引入模块过程中提高效率的方法。
例如:
(1)我们要使用os模块中的某个属性,那我们可以单独引入os中某个属性
from os import version
同样的我们也可以把引入的模块属性或者对象,直接赋给另外一个变量,使用as方法
from os import version as ver
这样使用方便
(2)如果在一个函数中频繁的使用某个模块的属性,那我们可以像上述那样,给它去一个本地变量的别名。因为频繁使用属性,而且模块是全局变量,这样消耗了多余的系统资源。
而且这样会使变量查找速度快很多。在查找全局变量之前总是会先查找本地变量,将经常用到的模块替换为一个本地变量,会使你的程序跑的快很多。并且在写代码的时候便于记忆,便于书写代码。
3. 进制转换
原理上分析切片运算:
list的切片,内部是调用__getitem__,__setitem__,__delitem__和slice函数。而slice函数又是和range()函数相关的。
给切片传递的键是一个特殊的slice对象。该对象拥有可描述所请求切片方位的属性,例如:
a = m [ 0 : 100 : 10 ] # 带步进的切片(步进值=10)
注意:步进值为step
当step > 0 时
切片从 start(含start)处开始,到end(不含end)处结束,**从左往右**,每隔(step-1)(索引之间的差仍为step,但相隔的元素是step-1个)个元素进行一次截取。
这时,start 指向的位置应该在end指向的位置的左边,否则返回值为空
当step < 0 时
切片从 start(含start)处开始,到end(不含end)处结束,**从右往左**,每隔(step-1)(索引之间的差仍为step,但相隔的元素是step-1个)个元素进行一次截取。
这时,start 指向的位置应该在end指向的位置的右边,否则返回值为空
有一个经典应用是:翻转字符串
比如:
>>> str='pythontab.com'
>>> str[::-1]
结果为:
'moc.batnohtyp'
切片边界问题
实例:
s=[1,2,3,4] # S 上界为 0 下界为 4
s[-100:100] #返回 [1,2,3,4] -100超出了上界,100超出了下界:等价于 s[0:4]
s[-100:-200] #返回 [] -100,-200均超出了上界,自动取上界:等价于s[0:0]
s[100:200] #返回 [] 100,200均超出了下界,自动取下界值:等价于s[4:4]
s[:100] #返回 [1,2,3,4] 开始值省略表示从第0个开始
s[0:] #返回 [1,2,3,4] 结束值为空表示到最后一个结束
注意:我使用的python版本为python2.7,python的切片存在版本兼容问题。在python3中有更加高级的功能和用法,在使用时一定要注意自己的python版本。
5. ip和mac获取
输出:
C:\Python27\python-code>python learning-5.py
12
83
26
0b1111011
0173
0x7b
00:24:2c:f5:46:66
zangzhe-PC
socket.gethostname(): zangzhe-PC
192.168.1.55
(1)import os
os.system('ls -l')
(2) import subprocess
subprocess.call('ls -l'.split())
2. 提高运行效率
下面说一下提高python执行效率的方法,这里只是说一点,python在引入模块过程中提高效率的方法。
例如:
(1)我们要使用os模块中的某个属性,那我们可以单独引入os中某个属性
from os import version
同样的我们也可以把引入的模块属性或者对象,直接赋给另外一个变量,使用as方法
from os import version as ver
这样使用方便
(2)如果在一个函数中频繁的使用某个模块的属性,那我们可以像上述那样,给它去一个本地变量的别名。因为频繁使用属性,而且模块是全局变量,这样消耗了多余的系统资源。
而且这样会使变量查找速度快很多。在查找全局变量之前总是会先查找本地变量,将经常用到的模块替换为一个本地变量,会使你的程序跑的快很多。并且在写代码的时候便于记忆,便于书写代码。
3. 进制转换
# arg1 is a string print int('1100', 2) print int('0123', 8) print int('0x1a', 16) # return a string print bin(123) print oct(123) print hex(123)4. 切片详解
原理上分析切片运算:
list的切片,内部是调用__getitem__,__setitem__,__delitem__和slice函数。而slice函数又是和range()函数相关的。
给切片传递的键是一个特殊的slice对象。该对象拥有可描述所请求切片方位的属性,例如:
a = [ 1, 2, 3, 4, 5, 6 ] x = a [ 1 : 5 ] # x = a.__getitem__( slice ( 1, 5, None ) ) a [ 1 : 3 ] = [10, 11, 12 ]# a.__setitem__( slice ( 1, 3, None ), [ 10, 11, 12 ] ) del a [ 1 : 4 ]# a.__delitem__( slice ( 1, 4, None ) )Python 的切片功能实际上比很多程序员认为的更强大。
a = m [ 0 : 100 : 10 ] # 带步进的切片(步进值=10)
注意:步进值为step
当step > 0 时
切片从 start(含start)处开始,到end(不含end)处结束,**从左往右**,每隔(step-1)(索引之间的差仍为step,但相隔的元素是step-1个)个元素进行一次截取。
这时,start 指向的位置应该在end指向的位置的左边,否则返回值为空
当step < 0 时
切片从 start(含start)处开始,到end(不含end)处结束,**从右往左**,每隔(step-1)(索引之间的差仍为step,但相隔的元素是step-1个)个元素进行一次截取。
这时,start 指向的位置应该在end指向的位置的右边,否则返回值为空
有一个经典应用是:翻转字符串
比如:
>>> str='pythontab.com'
>>> str[::-1]
结果为:
'moc.batnohtyp'
切片边界问题
实例:
s=[1,2,3,4] # S 上界为 0 下界为 4
s[-100:100] #返回 [1,2,3,4] -100超出了上界,100超出了下界:等价于 s[0:4]
s[-100:-200] #返回 [] -100,-200均超出了上界,自动取上界:等价于s[0:0]
s[100:200] #返回 [] 100,200均超出了下界,自动取下界值:等价于s[4:4]
s[:100] #返回 [1,2,3,4] 开始值省略表示从第0个开始
s[0:] #返回 [1,2,3,4] 结束值为空表示到最后一个结束
注意:我使用的python版本为python2.7,python的切片存在版本兼容问题。在python3中有更加高级的功能和用法,在使用时一定要注意自己的python版本。
5. ip和mac获取
import uuid def get_mac_address(): mac=uuid.UUID(int = uuid.getnode()).hex[-12:] return ":".join([mac[e:e+2] for e in range(0, 11, 2)]) print get_mac_address() import socket myname = socket.getfqdn(socket.gethostname()) print myname print "socket.gethostname(): ", socket.gethostname() myaddr = socket.gethostbyname(myname) print myaddr
输出:
C:\Python27\python-code>python learning-5.py
12
83
26
0b1111011
0173
0x7b
00:24:2c:f5:46:66
zangzhe-PC
socket.gethostname(): zangzhe-PC
192.168.1.55
相关文章推荐
- 无法获取IP地址,运行“ipconfig/renew”命令后提示“RPC服务器不可用”的解决方法
- 无法获取IP地址,运行“ipconfig/renew”命令后提示“RPC服务器不可用”的解决方法
- 使用 python 获取 Linux 的 IP 信息(通过 ifconfig 命令)
- windows及Linux系统下获取IP及MAC地址的方法
- flash学习之 利用stage.invalidate()方法和render事件提高as3程序的运行效率
- 详解几种Linux 查询外网出口IP命令的方法
- 【python】获取linux主机ip的一种方法
- java远程连linux获取命令两种方法
- linux下根据ip调用命令获取mac
- python脚本内运行linux命令的方法
- Python执行Linux系统命令的4种方法
- 提高 Python 运行效率的几个方法
- Erlang中执行linux命令的两种方法
- php 执行linux命令,shell脚本函数,获取服务器运行状态值
- python 执行shell命令无法获取返回值的解决方法
- Python执行Linux系统命令的4种方法
- Python执行Linux系统命令的4种方法
- python学习九:SocektServer学习、bisect、list的sort详解、清空字典的两种方法、zip初探
- JSP 获取用户的真实IP两种实现方法详解
- mysql 学习记录(二十一)--调整linux I/O以提高mysql运行效率