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()