os:针对系统的路径进行操作的模块,os不仅兼容windows,mac,linux等系统平台都是可以兼容的。 使用import os 进行导入os模块。 1.getcwd:获取当前执行操作文件的所在目录的路径。 import os
print(os.getcwd()) 获取路径。 2.isfile:判断路径是不是一个文件,返回布尔值。(加is前缀的大部分是判断语句,需要使用print进行打印) print(os.path.isfile("file.txt")) 括号内添加路径,要用引号。 3.isdir:判断当前的路径是不是一个目录。 print(os.path.isdir("file.txt")) 判断括号内添加的内容是不是为目录。 4.exists:判断文件或者目录是否存在。 print(os.path.exists("file.txt")) 判断括号里的内容是否存在。结果显示true。 5.split:分割。分割末尾的文件和目录,分割完成之后返回一个tuple。 print(os.path.split("file.txt")) 6.listdir:查找指定路径下面的文件和目录,包括隐藏文件和目录,查找完成之后返回一个list。 print(os.listdir(r"C:\Users\Administrator\PycharmProjects\wuhan15\demo")) 查看指定路径的文件和目录。 7.join:用于路径的拼接。 a=os.path.join(r"C:\Users\Administrator\PycharmProjects\wuhan15","demo") 赋值一个变量给a
print(a) 打印a
print(os.listdir(a)) 查看a下面的文件或则目录。 8.mkdir。创建一个目录 os.mkdir(r"C:\Users\Administrator\PycharmProjects\wuhan15\demo\武汉18班") 9.rename:修改目录名称。 os.rename(r"C:\Users\Administrator\PycharmProjects\wuhan15\demo\武汉18班",r"C:\Users\Administrator\PycharmProjects\wuhan15\demo\武汉15班") 将目录武汉18班改为武汉15班。 10.__file__:当前文件名称路径。 print(__file__) 查看当前文件所在的路径。 11.dirname:用来查找当前路径的上一级目录。 print(os.path.dirname(__file__)) 这是固定的格式,如果想查看当前文件下的上一级目录那就必须用这个格式。 想要查找上上级的目录,那么使用嵌套。在os里再套一层os。 print(os.path.dirname(os.path.dirname(__file__))) python当中的异常:是指程序运行时发生异常错误。 1.语法错误异常:SyntaxError 2.索引异常:indexError list1=[1]
print(list1[1]) 结果是,IndexError: list index out of range 3.键异常:Key Error:key不存在。 KeyError: 'huban' 这个huban不存在 4.缩进异常。IndentationError:语法缩进错误。 if 1==1:
print(1) IndentationError: expected an indented block。缩进引发的错误。 5.变量不存在。NameRrror print(di) NameError: name 'di' is not defined 括号里的变量不存在。 6.数据类型错误。TypeError a=123123
print(a[0]) TypeError: 'int' object is not subscriptable 异常处理:是指程序发生错误,异常处理,如果该程序发生异常要保证程序正常运行。 1.try:用来处理异常的 注意点:如果try下面语法发生错误,那么还是会抛出语法错误异常。 list1=[12.12,13,12]
try:
print(list[19]) 输出错误信息
except:
print("hello word") 有错误信息时进行输出另一个信息 2.finlly:不管try下面的代码有没有异常,都会执行finally下面的语句。 程序员自己抛出异常,中断程序。 raise:用来抛出异常的关键字。 Exception:属于一个错误,包含了多有的错误类型。 如果条件成立,就给出一个异常,raise定义一个异常,exception的异常类型。 a=8
if a > 5:
raise Exception("a 不能大于5") 结果显示:Exception: a 不能大于5 =========================================================================================================================================================== re正则:主要用来匹配数据,实现数据的快速查找。 1.预定义匹配符号: \d:匹配数值0-9 \D:非数值 2.数量匹配符号: ^:匹配当前的文本是以什么进行开头 $:匹配当前的文本是以什么进行结尾 *:匹配内容0次或者n次 +:匹配内容0次或者n次 ?:匹配0次或者1次 { }:自定义匹配次数 {1,3}:自定义匹配区间 match函数:从第一个字符开始进行匹配,如果第一个字符不是想要匹配的内容,则报错。 import re
str1="abc123abc123"
str2=re.match("\D",str1)
print(str2.group()) 结果是a,因为使用\D来进行匹配非数值的,所以结果就是第一个字母a。 str2=re.match("\d",str1) 如果用\d来匹配,就会报错。 *:匹配方式,匹配内容0次或者n次 str2=re.match("\D*",str1) 结果是abc,因为使用了*号,使用这个号意思就是匹配当前的内容,如果符合要求的话,他会一致匹配,直到匹配到非符合要求的内容,要是一直都是符合要求的内容,则会一直匹配。要是一开始就没有符合的内容,则不会进行匹配。 str2=re.match("\d*",str1) 结果没有内容,因为没有符合匹配的内容 +:匹配内容1次或者n次 str2=re.match("\D+",str1) 结果是abc,原理同上。唯一的区别是+号是从1次开始匹配的 str2=re.match("\d+",str1) 结果报错。因为是从1次开始匹配的,但是里面的内容第一次没有符合他的,所以报错。 ?:匹配0次或者1次 str2=re.match("\D?",str1) 结果是a。这个最多匹配1次。 str2=re.match("\d?",str1) 结果没有内容,因为这个是从0开始匹配的 { }:自定义匹配次数 str2=re.match("\d{0}",str1) 结果没有内容。如果匹配1次及以上,他就会报错。 str2=re.match("\D{3}",str1) 这是自定义匹配,进行了3次的匹配。所以结果是abc,如果匹配4次的话,就会报错。 {m,n}:匹配多少次到多少次 起始值:最少匹配的次数 结束值:最多匹配的次数 str2=re.match("\D{0,10}",str1) 这个的意思是匹配0次到10次,只要有符合的内容就会进行匹配。 ^:匹配以什么进行开头: import re
str1="15671809101"
str2=re.match("^156\d{0,10}",str1)
print(str2.group()) 这个的意思是,匹配156开头的内容,匹配数值0到10次数值,他匹配几次,就会在现有的内容里匹配几次。 $:匹配以什么进行结尾。 list1=["www.baidu.com","www.taobao.com","www.jd.cn"]
for i in list1:
str1=re.match("^www.*.com$",i)
print(str1.group()) *匹配0次到n,www.*.com,匹配多次。 search:从第一个字符开始查找,找到直接返回结果,找不到继续往下找,具有穿透的功能。(默认匹配一次。 import re
str1="abc123abc123"
str2=re.search("\d",str1)
print(str2.group()) 结果是1.这个指令具有穿透的功能,可以穿透不属于自己的内容,来找到属于自己的内容。 ①str2=re.search("\d*",str1) 在后面输入*,匹配结果为空,因为匹配0次或者多次,第一个不是就结束,所以结果为空。 ②str2=re.search("\d+",str1) 在后面输入+,匹配有结果。因为+号是从1次到n次。 ③str2=re.search("\d?",str1) 和*的结果一样,因为都是从0次开始匹配,所以结果为空。 findall:从第一个字符开始进行查找,找到所有内容为止。不需要配合group进行输出结果。 str1="abc123abc123"
str2=re.findall("\d",str1)
print(str2) 他的结果是以list的格式进行输出: ['1', '2', '3', '1', '2', '3'] *匹配符号:匹配0次或者1次,没有匹配到的内容用空格符代替。连续进行输出 str2=re.findall("\D*",str1) 结果是['abc', '', '', '', 'abc', '', '', '', ''],没有内容有空格进行代替了。 +匹配一次或者多次。不会匹配到空格。 str2=re.findall("\d+",str1) 结果是:['123', '123'],他没有空格,显示的直接为查找到的内容 ?匹配0次或1次。和*的结果相同。单次进行输出。 ['a', 'b', 'c', '', '', '', 'a', 'b', 'c', '', '', '', ''] 输出的形式为单次。 提取关键的信息内容: 输入想要查询内容前面以及后面的内容。 str1="https://fanyi.baidu.com/translate?aldtype=16047&query=&keyfrom=baidu&smartresult=dict&lang=auto2zh#en/zh/exception"
str2=re.findall(".en/(.+)/ex",str1) 匹配.en/后面的内容,以及匹配/ex前面的内容,(.+)
print(str2) 输出结果 compile:用来配合findall使用的,用来生成正则的对象,单独使用没有任何效果。
|