在Python中,一个.py文件就称之为一个模块(Module)python
被导入的模块,需与当前文件处于同一个文件夹下,才可以使用相对路径导入,不然报错正则表达式
(sys.path存储了当前文件的路径以及标准库模块的路径)shell
import
module1[, module2[,... moduleN]
import testbash
实质是:先获得test------>与path中的环境变量组成一个绝对路径------>导入文件内容------>执行文件所有内容dom
from
modname
import
name1[, name2[, ... nameN]]
from test import add函数
从模块中导入部分函数spa
from dict1 import test操作系统
从文件夹dict1中导入test.py文件命令行
实质是:先获得dict1\test.py------>与path中的环境变量组成一个绝对路径------>导入文件内容------>执行文件所有内容code
from
modname
import
*
导入模块中全部函数,但须注意,导入的函数若是和当前文件中的函数有重名现象,其中一个会被覆盖掉,先定义的被覆盖掉
请注意,每个包目录下面都会有一个__init__.py
的文件,这个文件是必须存在的,不然,Python就把这个目录当成普通目录(文件夹),而不是一个包。
__init__.py
能够是空文件,也能够有Python代码,由于__init__.py
自己就是一个模块,而它的模块名就是对应包的名字
调用包就是执行包下的__init__.py文件
import time time.time() #时间戳1473525444.037215 time.localtime() #struct_time gmtime() #将一个时间戳转换为UTC时区(0时区)的struct_time
random.random()
#(0,1)----float
random.randint(
1
,
3
)
#[1,3]----int
random.randrange(
1
,
3
)
#[1,3)
random.choice([
1
,
'23'
,[
4
,
5
]])
#N选一
random.sample([
1
,
'23'
,[
4
,
5
]],
2
)
#N选二
random.uniform(
1
,
3
)
#1和3之间浮点型数据
#练习~四位验证码 import random def aaa(): rec='' for i in range(4): a=random.randint(0,9) b=chr(random.randint(65,90)) c=chr(random.randint(97,122)) rec+=str(random.choice([a,b,c])) print(rec) aaa()
os.getcwd() 获取当前工做目录,即当前python脚本工做的目录路径 os.chdir("dirname") 改变当前脚本工做目录;至关于shell下cd os.curdir 返回当前目录: ('.') os.pardir 获取当前目录的父目录字符串名:('..') os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir('dirname') 生成单级目录;至关于shell中mkdir dirname os.rmdir('dirname') 删除单级空目录,若目录不为空则没法删除,报错;至关于shell中rmdir dirname os.listdir('dirname') 列出指定目录下的全部文件和子目录,包括隐藏文件,并以列表方式打印 os.remove() 删除一个文件 os.rename("oldname","newname") 重命名文件/目录 os.stat('path/filename') 获取文件/目录信息 os.sep 输出操做系统特定的路径分隔符,win下为"\\",Linux下为"/" os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n" os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为: os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix' os.system("bash command") 运行shell命令,直接显示 os.environ 获取系统环境变量
os.path.abspath(path) 返回path规范化的绝对路径 os.path.split(path) 将path分割成目录和文件名二元组返回 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素 os.path.exists(path) 若是path存在,返回True;若是path不存在,返回False os.path.isabs(path) 若是path是绝对路径,返回True os.path.isfile(path) 若是path是一个存在的文件,返回True。不然返回False os.path.isdir(path) 若是path是一个存在的目录,则返回True。不然返回False os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径以前的参数将被忽略 os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间 os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
sys.argv 命令行参数
List
,第一个元素是程序自己路径
sys.exit(n) 退出程序,正常退出时exit(
0
)
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的
Int
值
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操做系统平台名称
#进度条 import sys,time for i in range(10): sys.stdout.write('#') time.sleep(1) sys.stdout.flush()
. 匹配任意字符,除了换行符
^ 匹配字符串的开头
$ 匹配字符串的末尾
* 匹配0个或多个的表达式
+ 匹配1个或多个的表达式
? 转为非贪婪模式
e{ n} 匹配n个前面表达式
e{ n,} 匹配n或无穷个前面表达式
e{ n, m} 匹配n到m个前面表达式
| 或
\w 匹配数字字母下划线
\W 匹配非数字字母下划线
\s 匹配任意空白字符,等价于 [\t\n\r\f]
\S 匹配任意非空字符
\d 匹配任意数字
\D 匹配任意非数字
\b 匹配一个单词边界,也就是指单词和空格间的位置
import re ret=re.findall('c\l','abc\le') print(ret) #[] ret=re.findall('c\\l','abc\le') print(ret) #[] ret=re.findall('c\\\\l','abc\le') print(ret) #['c\\l'] ret=re.findall(r'c\\l','abc\le') print(ret) #['c\\l']
由于表达式为'c\\\\l'时,先传给python解释器,解释器获得‘c\\l’,再将‘c\\l’传给re解释器,解释器获得‘c\l’
r'c\\l'表示传给re解释器的就是‘c\\l’
ret=re.search('(?P<id>\d{2})/(?P<name>\w{3})','23/com') print(ret.group()) #23/com print(ret.group('id')) #23
findall( ) 返回全部知足匹配条件的结果,放在列表里
search( ) 在字符串内查找匹配,只找到第一个匹配的对象,该对象可
以
经过调用group()方法获得匹配的字符串,若是字符串没有匹配,则返回None
match( ) 同search,但只在字符串开始处进行匹配
split('[ab]','abcd') 先按'a'分割获得''和'bcd',在对''和'bcd'分别按'b'分割
aaa=re.split('[ab]','abdfeaabcc') print(aaa) #['','','dfe','','','cc']
sub('\d','aaa','sgee43jisg55',2) 将字符串中的数字替换为aaa,且替换2次 #sgeeaaaaaajisg55
compile函数:
用于编辑正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用
pattern = re.compile(r'\d+') #将正则表达式赋值给变量,方便后续重复使用 m = pattern.match('one12twothree34four') m = pattern.match('one123456786666e34four', 2, 10) # 从‘e’的位置开始匹配匹配到8结束,没有匹配 m=pattern.match('sds128545585sgegsgegw',3,6) #从1匹配到8 #<_sre.SRE_Match object; span=<3,6>,match='128'>
finditer() 字符串中找到正则表达式所匹配的全部子串,并把它们做为一个迭代器返回
import re it = re.finditer(r"\d+","12a32bc43jf3") for match in it: print (match.group() ) #12 #32 #43 #3