python语言 + 模块

数据分析,人工智能,机器学习,网站,科学计算

命令+shell语法格式

python【数据分析,网站,电影,书】

win python linux python 调用模块【积木】

Linux

python[空格或tab是必需]

python[模块{10功能}]

import os os.chmod('ttt.py',777)

os.chmod('/root/abc.txt',0777)

i=12344334 i=0232 i=0x33 i=ob1010 i=1.3 i=9999999999999999999999999999

i="abc" i='abc' i='''abc'''

变量赋值: 1.数字 ab=1 ab=99999999999999999999 ab=3.333 ab=0777 (8进制) ab=0xff (16) ab=0b010101 (2)

2.字符 ab="abc" ab='ab' ab='''abcc''' a[1] a[1:-1] a[:4] a[4:] print a+b print a*20

3.变量可以是列表 a=['tom',122,'test',34]

a[0] 提取a列表中的第0个值 a[1] a[:3] 提取a列表中的第0到第2值(3-1=2) a[3:] tom in a 判断tom是否在a变量中 'nihao' in a 判断nihao是否在a变量中

a.append('xxx') 向列表a中追加值 a.remove(122) 从列表a中删除122的值

4.变量可以是元组,不可修改的列表 ab=('tom',22,'hehe') ab[0] ab[1] 'tom' in ab 判断tom是否在ab变量中

5.字典 toms={'name':'tom','age':22,'sex':'male'} 注意事项:字串一定需要【引号】

toms #提取所有的值 toms['name'] #提取toms字典中name的值 toms['age']=18 #修改toms字典中age的值 toms['qq']=1111 #新建toms字典中qq以及它的值

==  !=   >=   <=   >   < 

案例: 1.读取用户输入信息,赋值给变量 user=raw_input("提示:") passwd=raw_input("提示:")

2.判断: 如果用户名是bob,密码是123456,则提示成功 否则提示失败

提示:#coding:utf-8 提示:and逻辑并且,相当于shell【&&】 if 判断1 and 判断2

#!/usr/bin/python #coding:utf-8

user=raw_input("请输入用户名:") passwd=raw_input("请输入用密码:")

if user=='bob' and passwd=='123456': print "成功" else: print "失败"

score=raw_input("请输入成绩:") if score > 90: print "A" elif score > 80: print "B" elif score > 70:

vim a.py import random num=random.randint(1,100)

if 判断: 指令

if 判断: 指令 else: 指令

语法格式 while 判断: 指令1 指令2 ...

用python计算1..100的和 1+2+3+4+5+6...+100 提示1:变量控制循环次数i 提示2:变量求和sum 提示3:i+=1 (i=i+1)等同于shell中的i++

#!/usr/bin/python #coding:utf-8 i=1 sum=0 while i <= 100: sum=sum+i i+=1 print "总和是:",sum print "总和是%d" %sum

备注:%s代表字符(string),%d代表数字(digit)

for和while都支持break和continue

读取用户输入,直到输入tom为止 #!/usr/bin/python #coding:utf-8

while True: user=raw_input("请输入内容:") if user == 'tom': break

用python计算1..100中2的被数的和 2+4+6+8+10+12.... 提示1:变量控制循环次数i 提示2:变量求和sum 提示3:i+=1 (i=i+1)等同于shell中的i++ 提示4:(i%2)==0 判断是否整除 提示5:需要continue

i=0 sum=0 while i <= 100: i+=1 if (i%2!=0):
continue sum=sum+i print "总和是:",sum

语法格式: for 变量 in 值: 指令1 指令2

for i in range(1,11): print "我是%d" %i else: print "ok"

提示:range(1,11)自动生成1..10的数字 提示:range(1,11,2)自动生成1..10的数字(步长为2)

range(100000) xrange(100000)

打印斐波那契数列:0 1 1 2 3 5 8 ...

#!/usr/bin/python #coding:utf-8

fibs=[0,1] n=int(raw_input("请输入几组:")) for i in range(n-2): fibs.append(fibs[-1]+fibs[-2]) print fibs

列表解析【快速生成列表变量】 ['192.168.4.%d'%i for i in range(1,255)]

[ 10+i for i in range(100)]

文件操作: open('文件名','权限')

权限列表: r 以读方式打开(文件不存在则报错) w 以写方式打开(文件存在则清空,不存在则创建) a 以追加模式打开(必要时创建新文件) r+ 以读写模式打开(参见r) w+ 以读写模式打开(参见w) a+ 以读写模式打开(参见a)

abc=open('/etc/hosts') 打开文件 abc.readline() 读取文件中的一行 abc.readline(6) 读取文件中的6个字符 abc.read() 读取文件的剩余全部 abc.seek(0) 重新定位文件的位置 abc.close() 关闭文件

data=open('/root/new.txt','w') 新建文件 data.writelines("hello the world\n") 写入数据(在内存) data.writelines("ni chi le ma\n") 写入数据(在内存) data.flush() 写入硬盘 data.close() 关闭文件

使用循环读取文件内容: data=open('/etc/hosts') for i in data: print i

模拟cp操作,将/root/new.txt复制为new2.txt 提示1:循环读取第一个文件每行 提示2:将读取出来的内容写入第二个文件 data1=open('/root/new.txt') data2=open('/root/new2.txt','w') for i in data1: data2.writelines(i) data1.close() data2.close()

Python调用shell命令:

import subprocess subprocess.call('ls /',shell=True)

++++++++++++++++++++++++++++++++++

Python定义函数格式 define定义

def 函数名称(形参): 指令1 指令2

Python调用函数格式 函数名(实参)

def ad(): | print 3+4 |-->定义函数 | ad() --->调用函数 tt=ad() print tt ---->返回None

def ad() i=3+4 return i --->返回数据

tt=ad() --->tt的值是7 print tt

def ad(x,y): x和y形式参数 print x+y print x*y

ad(1,2) 1和2实际参数 ad(8,5) ad(7,9)

默认参数 def ad(x=3,y=5): x=3和y=5是默认参数 print x+y

ad() 使用默认参数3和5 ad(8,15) 使用自定义参数8和15

如何取读取python脚本的参数 #!/usr/bin/python #coding:utf-8

import sys print sys.argv print sys.argv[0] print sys.argv[1] print sys.argv[2] print len(sys.argv)

#vim tt.py 新建模块 def ad(x=3,y=5): print x+y

def reduce(i,j): print i-j

#python import tt 调用模块 tt.ad() 使用模块中的函数 tt.ad(8,9) 使用模块中的函数 tt.reduce() 失败 tt.reduce(8,2)

#python from tt import ad 从abc模块中导入ad功能 ad()

import string string.digits string.letters

生成8为随机密码 #!/usr/bin/python #coding:utf-8

import random,string passwd='' mypass=string.digits+string.letters for i in range(8): passwd=passwd+random.choice(mypass)

print passwd

try: 指令 except 错误类型: print "错误提示内容"

try: num=int(raw_input('请输入数字:')) except: //有错误才执行// print "错误" else: //没有错误才执行// print num finally: //有没有错误都执行// print "程序结束"

with open('/etc/hosts') as data: data.readline() data.readline() with语句结束后会自动关闭文件,不需要手动close()

自定义报错信息:ValueError raise

断言:assert

正则表达式 m=re.match('the','hello the world') 从开始匹配,在数据中找the 找到返回Match,否则返回None m.group() #查看找到的匹配值

m=re.search('the','hello the world') 在整个数据的任意位置中找the,仅找第一个匹配 找到返回Match,否则返回None m.group() #查看找到的匹配值

m=re.findall('the','hello the a the world') 在整个数据的任意位置中找the,找全部的匹配 找到返回Match,否则返回None m.group() #查看找到的匹配值

统计Apache访问日至 1.统计每个客户端访问次数

/var/log/httpd/access_log #!/usr/bin/python #coding:utf-8 import re #导入正则模块 z='Firefox' #匹配IP地址 dica={} #空字典 data=open('access_log') #读取文件 for i in data: #循环文件每一行 m=re.search(z,i) #在每行中匹配IP if m: ip=m.group() #把匹配的IP提取出来 dica[ip]=dica.get(ip,0)+1 print dica

for i in {1..254} do ping -c2 -i 0.2 192.168.4.$i &>/dev/null if [ $? -eq 0 ];then echo "192.168.4.$i is up" else echo "192.168.4.$i is down" fi done

import subprocess for i in range(1,255): m=subprocess.call('ping -c2 192.168.4.%s &>/dev/null'%i,shell=True) if m: print "192.168.4.%s is down"%i else: print "192.168.4.%s is up"%i

CPU--IO

	ping -c2 192.168.4.1

网卡--------------------------------------------------------->网卡0.1s <----------------------------0.1s 0.000000001 CPU等 0.000000001 CPU返回结果:通的

ping -c2 192.168.4.2

网卡--------------------------------------------------------->网卡0.1s <----------------------------2s 0.000000001 CPU等

#!/usr/bin/python #coding:utf-8

import subprocess import threading def myping(ip): m=subprocess.call('ping -c2 %s &>/dev/null'%ip,shell=True) if m: print "%s is down"%ip else: print "%s is up"%ip #定义函数,允许ping任何主机,myping需要给IP作为参数 ips=['172.40.3.%s'%j for j in range(1,255)] #生成整个网段的IP列表[172.40.3.1,172.40.3.2....] for i in ips: t=threading.Thread(target=myping,args=(i,)) t.start()

def ping(ip): m=subprocess.call('ping -c2 %s'%ip,shell=True) if m: print "%s is down"%ip else: print "%s is up"%ip

ips=['192.168.4.%s'%i for i in range(1,255)] ips=[192.168.4.1,192.168.4.2....]

for i in ips: t=treading.Tread(targe=ping,args=(i,)) t.start()

使用paramiko自动远程其他主机

#!/usr/bin/python import paramiko host='192.168.4.5' ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(host, username='root', password='redhat') stdin, stdout, stderr = ssh.exec_command('ls /') print stdout.read() print stderr.read()