python常用

上一篇 / 下一篇  2017-08-28 17:44:43 / 个人分类:python

学习网站
基础+标准库(常用模块讲解,中文哦~~~)
Python标准库的重要性在于:
  • 标准库是Python的一个组成部分。
  • Python的哲学是一个问题只有一个最好的解决方法。这些标准库为许多问题提供了一个标准的解决方案。
python常用方法
python官网
1、安装python:1)下载、2)配置环境变量
环境变量:path路径下配置python安装路径即可
python官网模块下载地址:

模块安装:
一.远程安装(不确定正确性)
1)确认已配置python环境变量
类似path:E:\Python27\Scripts
2)cmd任意地址执行命令:easy_install模块名。
如安装模块PIL:easy_install PIL
二、 单文件模块(不确定正确性)
1)进入https://pypi.python.org下载对应模块
2)解压模块。
如解压到:D:\Python27\Lib\site-packages\PyQt4_gpl_win-4.12.1
3)确认已配置python环境变量
类似path:E:\Python27\Scripts
4)直接把文件拷贝到 $python_dir/Lib
三、 多文件模块,带setup.py(常用)
1)进入https://pypi.python.org下载对应模块
2)解压模块。
如解压到:D:\Python27\Lib\site-packages\PyQt4_gpl_win-4.12.1
3)确认已配置python环境变量
类似path:E:\Python27\Scripts
4)cmd到解压模块路径-->运行命令:python setup.py install
四.pip安装
pip install 模块名。如:pip install send2trash

1.os模块 文件读写
说明:经常和文件、目录打交道,这是就离不了os模块。os模块包含普遍的操作系统功能,与具体的平台无关。
相对路径相当于程序的当前路径,绝对路径从根目录开始
读写文件过程
1)用import os导入读写模块
读写文件时不需要os模块,但是如果需查看文件路径等信息会需要此模块
2)调用open()函数,返回一个File对象,打开文件
打开文件有三种模式,模式参数为第二个参数:分别为读模式r、写模式w和添加模式a。如:open('fileName','w')
3)调用File对象的read()、readlines()或write()方法,读或写文件。(read返回字符串,readlines返回列表)
4)调用File对象的close()方法,关闭该文件
一般一个open对应一个close。如果打开后不关闭,再次调用时会报错

常用命令:
1)os.path.abspath('path'——相对路径转换绝对路径 D:\Eclipse
2)os.path.relpath('path','start')------返回一个相对路径
3)os.path.join('path1'[, path2[, ...]])——连接目录和文件名。返回含文件分割符的文件字符串。参数类型必须一致为string
4)os.path.dirname('path')——返回最后一个斜杠前的内容(路径名称)
5)os.path.basepath('path')------返回最后一个斜杠之后的内容(可能是文件名,也可能是文件加名)
6)os.path.split('path')------把最后一个斜杠的前后的内容,划分为两部分
7)pathName.split(os.path.sep)------把斜杠外的内容均划分为一个部分(此处的pathName是一个变量名称)
8)os.system()——执行shell命令
如:
myname =os.path.abspath(os.path.join(os.path.dirname(__file__),'zhuhuan'))
myname2=os.path.abspath(os.path.join(os.path.dirname(__file__),'zhuhuan1'))
os.system('cp -Rf %s %s' % (myname, myname2 + '/moxian_m2')) #这行命令可以直接在linux路径下执行,相对于liunx命令:cp -Rf /opt/home/jenkins/zhuhuan /opt/home/jenkins/zhuhuan1/moxian_m2(复制的目录必须存在)
9)os.path.isdir(path)——判断路径是否存且为文件夹,是则返回true,否则返回false
#isdir
myisdir=os.path.isdir('E:\pythonDoc\jenkinsPac')
ifmyisdir:
print'路径存在:',myisdir
else:
print'路径不存在:',myisdir
10)os.path.exists('path')------判断参数所指的文件或文件夹路径是否存在,是则返回true,否则返回false
11)os.path.isfile(path)——判断路径是否存在且为文件,是则返回true,否则返回false
12)os.getcwd()------获取当前目录(包含分隔符)
13)os.chdir()------改变当前目录(临时性改变)
14)os.mkdirs('path')------创建文件夹
15)os.getsize('path')------返回path参数中的文件字节数
16)shelve二进制保存变量
17)pprint保存变量,写入py文件
17)os.unlink('path')------删除path处的文件
18)os.rmdir('path')------删除path处的空文件夹。文件夹下必须为空,且文件夹必须存在

2.logging模块
说明:
1)日志文件保存设置
#保存日志到执行文件路径下的'zhuhuanlog',文件名为'test.log'
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='zhuhuanlog/test.log',
filemode='w')
2)日志打印到屏幕
import logging  
logging.debug('debug message')  
logging.info('info message')  
logging.warning('warning message')  
logging.error('error message')  
logging.critical('critical message')
案例:
myname=os.path.abspath(os.path.join(os.path.dirname(__file__),'zhuhuan'))
myname2=os.path.abspath(os.path.join(os.path.dirname(__file__),'zhuhuan1'))
#执行shell命令,相对于命令:cp -Rf /opt/home/jenkins/zhuhuan /opt/home/jenkins/zhuhuan1/moxian_m2
r = os.system('cp -Rf %s %s'% (myname, myname2 +'/moxian_m2'))
#打印日志判断
if r == 0:
logging.info('cmd: cp -rf %s %s sucessful' % (myname, myname2 + '/moxian_m2'))
else:
logging.error('cp failed--result:%d' % r)
raise ValueError('Build Failed!')

生成日志文件如下:

3.Python shutil模块--复制、移动和删除文件、文件夹
1)shutil.rmtree()——如果要递归删除G:\test 目录的内容,可使用shutil.rmtree()函数
例如:
shutil.rmtree(_code_online+'/moxian_m2')
2)shutil.copy(source,destination)------复制单个文件。如果文件存在,则会覆盖文件。
3)shutil.copytree(source,destination)------复制路径下所有文件夹和文件。如果文件存在,则会报错
4)shutil.move(source,destination)------移动文件与改名
5)shutil.rmdir(path)------永久删除路径下所有文件和文件夹
6)import send3Strash pip installl send3trash send2trash.send2trash(source)------安全删除(删除时,文件会发生到回收站)


4.site
 如果有许多个.py模块文件,我们可以把他们统一放在一个文件夹下,方便管理,在C:\Python34\Lib\sit-packages下
importsite
#显示文件执行包路径
site.getusersitepackages() ---显示文件执行包路径
输出结果: C:\Users\Moxian\AppData\Roaming\Python\Python27\site-packages


5.其他
1)sys.argv[0]和__file__
Python下,获取当前执行主脚本的方法有两个(相对路径../opt):
2)相对路径和绝对路径http://blog.csdn.net/hgd613/article/details/8041662
相对路径用../来表示一级目录,以便在不同电脑获取路径时,无需再修改
3)增加__init__.py文件后,引入包后,会先运行__init__.py中代码
scp /../mo-order-1 root@mo-order-1:/opt/htdocs/webapp/
4)str.endswith(suffix[, start[, end]])---------用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置。
5)Python isdecimal() 方法
Python isdecimal() 方法检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。
注意:定义一个十进制字符串,只需要在字符串前添加 'u' 前缀即可。
语法
str.isdecimal()
6)2Python len() 方法
Python len() 方法返回对象(字符、列表、元组等)长度或项目个数。

7.re模块正则表达式
步骤方法
1)用import re 导入正则表达式模块
2)用re.compile()函数创建一个Regex对象【记得使用原始字符串(不包含转义字符),即Regex对象内容前加小写r】
3)向Regex对象的search()或findall()方法传入想要查找的字符串。search()方法返回一个Match对象,findall()方法返回一组字符串
4)调用Match对象的group()或groups()方法,返回实际匹配文本的字符串

正则表达式符号
1)?
匹配零次或一次前面的分组(表示可选匹配)
2)*
匹配零次或多次前面的分组(即星号之前的分组可以出现任意次)
3)+
匹配一次或多次前面的分组(至少出现一次)
4){n}
匹配n次前面的分组(匹配特定次数)
5){n,m}
匹配至少n次,至多m次前面的分组(匹配范围内的次数)。默认为贪心模式(取最大次数)
6){n,m}?或*?或+?
对前面分组进行非贪心匹配
7)^spam
意味着字符串必须以spam开始
8)spam$
意味着字符串必须以spam结束
9)^spam$
意味着字符串必须为spam
10).
匹配所有字符,换行字符除外(匹配一个字符)
11)re.compile('.*',re.DOALL)
匹配所有字符,包括换行字符(\n)
12).*
匹配所有字符,换行字符除外(匹配多个字符)
13)\d、\w 、\s
分别匹配数字、单词和空格
14)\D、\W、\S
分别匹配数字、单词和空格外所有字符
15)[abc]
匹配括号内任意字符,诸如a、b、c
16)[^abc]
匹配不在括号内的任意字符

8.SSH命令
常用
1)通过ssh远程运行shell命令
命令格式:
ssh -l name remoteserver ‘command’
ssh -l 主机名 远程主机的节点或ip shell命令
案例:
ssh -l root mo-boss-1 ls -tn/opt/htdocs/webapp/mo_boss
python中案例:
ipName="mo-boss"
noteName=1
warPackage="mo_boss"
checkwarCMD ='ssh -l root {ipNmae}-{noteName} "ls -tn /opt/htdocs/webapp/{warPackage}"'.format(warPackage=warPackage,ipName=ipName,noteName=noteName)

9.subprocess模块--子进程

说明:进程是资源分配的单位,父进程只能有一个,子进程可以有多个
进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体

当我们需要调用系统的命令的时候,最先考虑的os模块。用os.system()和os.popen()来进行操作。但是这两个命令过于简单,不能完成一些复杂的操作,如给运行的命令提供输入或者读取命令的输出,判断该命令的运行状态,管理多个命令的并行等等。这时subprocess中的Popen命令就能有效的完成我们需要的操作。在这里对Popen予以简单介绍。

Python多进程(1)——subprocess与Popen()
Python多进程方面涉及的模块主要包括:
subprocess:可以在当前程序中执行其他程序或命令;
mmap:提供一种基于内存的进程间通信机制;
multiprocessing:提供支持多处理器技术的多进程编程接口,并且接口的设计最大程度地保持了和threading模块的一致,便于理解和使用。

8.random模块---随机函数
参考:
import random
常用命令:
1)random.sample(sequence, k)————从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。
2)random.shuffle(sequence)————从用于将一个列表中的元素顺序打乱
3)random.random()————用于生成一个0到1的随机符点数: 0 <= n < 1.0
4)random.uniform(a, b)————用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成的随机数n: a <= n <= b。如果 a <b, 则 b <= n <= a。
5)random.randint(a, b)————用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b
6)random.randrange([start], stop[, step])————从指定范围内,按指定基数递增的集合中 获取一个随机数。
7)random.choice(sequence)————从序列中获取一个随机元素。参数sequence表示一个有序类型。这里要说明

TAG:

 

评分:0

我来说两句

Open Toolbar