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